selenium爬取腾讯新闻疫情数据续——按控件tag爬取

前面更新过几篇爬虫的博客,详见以下链接:

requests+json爬取腾讯新闻feiyan实时数据并实现持续更新
requests+bs4爬取丁香园feiyan实时数据
selenium爬取腾讯新闻feiyan页面实时数据

这里主要是,之前面试的时候,当时信号不好没听清,可能当时面试官想问我怎么具体爬到表格里的每个数据。
像之前那篇博客里写的,我当时是直接将整个表格爬下来,发现爬下来的结构是有规律的,所以就直接对表格进行拆分。但如果想要爬取表格里的每个数据,则要用到.find_elements_by_tag_name()。下面就来说说具体怎么操作。

前面的介绍不详细说了,具体可以看之前的博客,我们先来看网页里表格的控件,直接定位到表格部分:
在这里插入图片描述
我们可以看到,在这里,列名以及国家名的tag都是th,而具体的数据是td,接下来就可以直接进行解析了:

import pandas as pd
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
executable_path = 'C:\\Program Files (x86)\\Google\Chrome\\Application\\chromedriver'
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
dr = webdriver.Chrome(chrome_options = chrome_options, executable_path = executable_path)

url = "https://news.qq.com/zt2020/page/feiyan.htm#/global"
dr.get(url)
main_view = dr.find_element_by_id('app')
try:
    table = main_view.find_element_by_xpath("//div/div[@class='globalWraper']/div[3]/div[@class='foreignListWraper']/div[@class='listWraper']/table")
except:
    table = main_view.find_element_by_xpath("//div/div[@class='globalWraper']/div[3]/div[@class='foreignListWraper']/div[@class='listWraper filterGray']/table")
    
thLine = table.find_elements_by_tag_name("th")
thData = []
for th in thLine:
    thData.append(th.text)

tdLine = table.find_elements_by_tag_name("td")
tdData = []
for td in tdLine:
    tdData.append(td.text)

这里我们定位table的时候用到了try,是因为之前那里改了一次名字哈哈哈。拿到tdLinetbLine之后,我们用列表先存储出来,这里需要先看下爬下来是什么。先看下th爬下来的东西:
在这里插入图片描述
前面五个是列名,这里想要存出列名也可以,后面自己命名也可以,第六个是不需要用到的,第七个之后都是国家名:

headLine = thData[:5]
countryList = thData[6:]

再来看td爬下来的数据:
在这里插入图片描述
每5个为一个国家的数据,我们只需要前四个数据:

addCase = tdData[0::5]
allCase = tdData[1::5]
cure = tdData[2::5]
dead = tdData[3::5]

最后,将国家跟数据拼接在一起:

globalDF = pd.DataFrame({'country': countryList,
                         'addCase': addCase,
                         'totalCase': allCase,
                         'totalCure': cure,
                         'totalDeath': dead})

在这里插入图片描述
其他的实时更新csv跟之前的操作一样,有兴趣可以看下之前的博客。以上就是根据控件tag爬取数据的内容啦~ 继续冲鸭~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值