为什么我只爬到第一行表头,如何才能爬到所有国家的呢?
#爬取世界各国疫情数据import urllib.request as request
import io
def download(url:str):
response = request.urlopen(url)
textIOWrapper = io.TextIOWrapper(buffer=response,encoding="UTF-8")
html=textIOWrapper.read()
return html
url = "https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1"
html=download(url=url)
from bs4 import BeautifulSoup
FIELDS = ('name', 'today_confirm','confirm','dead','heal')# 定义要抓取的各列的标识
def bs_scraper(html):
# parse the HTML
soup = BeautifulSoup(html, features='html.parser')
body = soup.find(name='body')
results = {}
div_1 = body.find_all(name='div', attrs={'class': 'overseas_list_nation'})
print(div_1)
for div in div_1:
for field in FIELDS:
div_2 = div.find(name='div', attrs={'class': 'overseas_list_%s' % field})
results = div_2.text
print(results)
return results
bs_scraper(html) 网页源代码没有数据,都是js动态加载的,你这样怎么可能爬的到?
疫情数据去爬这个接口:https://c.m.163.com/ug/api/wuhan/app/data/list-total?t=322104795402 YunGuo 发表于 2021-1-13 15:59
网页源代码没有数据,都是js动态加载的,你这样怎么可能爬的到?
疫情数据去爬这个接口:https://c.m.163. ...
大佬,我想问一下,你是如何获得到这个api的呢?求教{:10_275:} 接着上面大佬给的 api,里面再每个国家/地区后头都会有一个 id 号
这里找到了另外一个 api,可以获取指定国家/地区每一天的数据(包含历史数据)
https://c.m.163.com/ug/api/wuhan/app/data/list-by-area-code?areaCode=10
只需要把areaCode=后面的数字改成对应国家/地区的id就可以了。例如:中国的id为 0 那么 对应的 url 为 https://c.m.163.com/ug/api/wuhan/app/data/list-by-area-code?areaCode=0
页:
[1]