首先我们先测试爬虫程序: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()
爬取结果 :

到此爬虫程序测试成功,接下来设计算法爬取该网站,欲知后事如何,请听下回分解~
博主分享了使用Python结合selenium和火狐浏览器驱动爬取卫健委官网疫苗接种数据的经验。通过设置等待时间、提取链接、解析详情页文本,成功获取到截至2021年5月2日的全国疫苗接种日期和剂次数。爬虫程序经过测试运行成功。
7万+

被折叠的 条评论
为什么被折叠?



