鱼C论坛

 找回密码
 立即注册
查看: 2560|回复: 3

[已解决]为什么我只爬到第一行表头,如何才能爬到所有国家的呢?

[复制链接]
发表于 2021-1-13 11:25:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #爬取世界各国疫情数据
  2. import urllib.request as request
  3. import io

  4. def download(url:str):
  5.     response = request.urlopen(url)
  6.     textIOWrapper = io.TextIOWrapper(buffer=response,encoding="UTF-8")
  7.     html=textIOWrapper.read()
  8.     return html
  9. url = "https://wp.m.163.com/163/page/news/virus_report/index.html?_nw_=1&_anw_=1"
  10. html=download(url=url)

  11. from bs4 import BeautifulSoup
  12. FIELDS = ('name', 'today_confirm','confirm','dead','heal')# 定义要抓取的各列的标识
  13. def bs_scraper(html):
  14.     # parse the HTML
  15.     soup = BeautifulSoup(html, features='html.parser')
  16.     body = soup.find(name='body')
  17.     results = {}
  18.     div_1 = body.find_all(name='div', attrs={'class': 'overseas_list_nation'})
  19.     print(div_1)
  20.     for div in div_1:
  21.         for field in FIELDS:
  22.             div_2 = div.find(name='div', attrs={'class': 'overseas_list_%s' % field})
  23.             results[field] = div_2.text
  24.     print(results)
  25.     return results

  26. bs_scraper(html)
复制代码
最佳答案
2021-1-13 17:07:34
接着上面大佬给的 api,里面再每个国家/地区后头都会有一个 id 号

这里找到了另外一个 api,可以获取指定国家/地区每一天的数据(包含历史数据)

https://c.m.163.com/ug/api/wuhan ... ea-code?areaCode=10

只需要把areaCode=后面的数字改成对应国家/地区的id就可以了。例如:中国的id为 0 那么 对应的 url 为 https://c.m.163.com/ug/api/wuhan ... rea-code?areaCode=0
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-13 15:59:27 | 显示全部楼层
网页源代码没有数据,都是js动态加载的,你这样怎么可能爬的到?
疫情数据去爬这个接口:https://c.m.163.com/ug/api/wuhan/app/data/list-total?t=322104795402
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 16:40:22 | 显示全部楼层
YunGuo 发表于 2021-1-13 15:59
网页源代码没有数据,都是js动态加载的,你这样怎么可能爬的到?
疫情数据去爬这个接口:https://c.m.163. ...

大佬,我想问一下,你是如何获得到这个api的呢?求教
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 17:07:34 | 显示全部楼层    本楼为最佳答案   
接着上面大佬给的 api,里面再每个国家/地区后头都会有一个 id 号

这里找到了另外一个 api,可以获取指定国家/地区每一天的数据(包含历史数据)

https://c.m.163.com/ug/api/wuhan ... ea-code?areaCode=10

只需要把areaCode=后面的数字改成对应国家/地区的id就可以了。例如:中国的id为 0 那么 对应的 url 为 https://c.m.163.com/ug/api/wuhan ... rea-code?areaCode=0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 01:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表