python - 缺少 BS4 元素
问题描述
我正在尝试解析一些 HTML,但我想要的部分根本没有出现在汤中。前面的部分和后面的部分都在那里,但不是我想要的。难道我做错了什么?
网址:https ://coronavirus-portugal-esriportugal.hub.arcgis.com/ 我的代码(带有网址):
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”、“Recuperados”、“Óbitos”的数字)
解决方案
数据是从后端 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())
推荐阅读
- jmeter - 由于 JMeter 中的 webkitformboundary,发布请求失败
- java - spring boot - 从过滤器返回 pojo 响应
- android-studio - CTRL+F 在 android studio logcat 上不起作用
- python - Python Selenium Traceback(最近一次调用最后一次):
- wix - 如何在使用 Windows 安装程序进行修补期间重命名组件下的基本文件元素名称?
- javascript - 过滤器状态在 React 中无法正常工作
- mysql - SQL:连接具有大量列的表时删除重复列
- python - Seaborn 热图行为
- r - data.table 根据变量分配新列
- java - LibGDX 如何将游戏放在桌面上?*** 固定的 ***