缺少BS4元素

2024-09-27 19:28:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析一些HTML,但我想要的部分根本没有出现在汤中。前面的部分和后面的部分都在,但不是我想要的。我做错什么了吗

网址:https://coronavirus-portugal-esriportugal.hub.arcgis.com/ 我的代码(带有URL):

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

url = 'https://coronavirus-portugal-esriportugal.hub.arcgis.com/'
uClient = uReq(url)
page_html = uClient.read()
uClient.close()

soup = soup(page_html, 'html.parser')
body = soup.body
print(body.prettify())

我在寻找前四个数字(对应于“Casos Confirmados”、“Casos Suspeitos”、“Recurperados”、“Óbitos”)


Tags: fromhttpsimportcomhtmlasbodyhub
1条回答
网友
1楼 · 发布于 2024-09-27 19:28:45

从后端SQL数据库动态检索数据。如果您检查更新页面的网络流量(并了解一点SQL),您可以了解如何编写查询发送给自己以检索特定于葡萄牙的数据。在这里,215对应于葡萄牙

import requests

r = requests.get('https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/1/query?f=json&where=OBJECTID=215&outFields=*')
print(r.json())

所有数据(使用不同的查询):

https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/1/query?f=json&where=1=1&outFields=*

您还可以动态拾取查询字符串中使用的其他标识符

import requests, re

country_id = 215

with requests.Session() as s:
    r = s.get('https://coronavirus-portugal-esriportugal.hub.arcgis.com/')
    p = re.compile(r'https://services1.arcgis.com/(.*?)/arcgis')
    code = p.findall(r.text)[0]
    r = s.get(f'https://services1.arcgis.com/{code}/arcgis/rest/services/ncov_cases/FeatureServer/1/query?f=json&where=OBJECTID={country_id}&outFields=*')
    print(r.json())

相关问题 更多 >

    热门问题