设计一个网络爬虫的算法,动态获取全国新型冠状肺炎疫情~No.1

博主分享了使用Python结合selenium和火狐浏览器驱动爬取卫健委官网疫苗接种数据的经验。通过设置等待时间、提取链接、解析详情页文本,成功获取到截至2021年5月2日的全国疫苗接种日期和剂次数。爬虫程序经过测试运行成功。

首先我们先测试爬虫程序:Python爬虫爬取【卫健委官网疫苗接种数据】


卫健委的网站难爬,反爬机制是真的强........

本人使用selenium+火狐驱动获取其数据(截止2021-05-02)

需要准备geckodriver.exe并且安装有火狐浏览器

推荐国际版本火狐:https://www.mozilla.org/zh-CN/firefox/new/

geckodriver下载:https://github.com/mozilla/geckodriver/releases

待爬取的网页如图:

列表页:

 

 详情页:


爬取策略:

1.从列表页用xpath获取a标签的url;

2.根据列表页url进入详情页,用xpath提取文本;

3.再用正则表达式截取想要的数据。

源代码:

from lxml import etree
from selenium.webdriver import Firefox
from selenium.webdriver import FirefoxOptions
import time, re

option = FirefoxOptions()
# 隐藏浏览器
option.add_argument("--headless")
# 注意geckodriver路径
browser = Firefox(executable_path='geckodriver', options=option)
index_url = "http://www.nhc.gov.cn/xcs/yqjzqk/list_gzbd.shtml"
browser.get(index_url)
# 火狐需要等待,设置等待时间为3s
time.sleep(3)
index_elem = etree.HTML(browser.page_source)
# 提取当前网页中所有的链接
new_url_index_list = index_elem.xpath('//a/@href')

for i in range(0, len(new_url_index_list)):
    if new_url_index_list[i].startswith("/xcs/yqjzqk/") and new_url_index_list[i] is not index_url:
        browser.get("http://www.nhc.gov.cn" + str(new_url_index_list[i]))
        time.sleep(3)  # 等待,设置等待时间为3s
        index_elem = etree.HTML(browser.page_source)
        # 提取疫苗接种情况
        text = index_elem.xpath('//*[@id="xw_box"]/p/text()')[0]
        data_date = re.search('截至(.*?),31个省', str(text)).group(1)
        data_count = re.search('累计报告接种新冠病毒疫苗(.*?)剂次。', str(text)).group(1)
        print(data_date + " | " + data_count)

browser.quit()

爬取结果 :

 

到此爬虫程序测试成功,接下来设计算法爬取该网站,欲知后事如何,请听下回分解~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天涯(◦˙▽˙◦)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值