基于Python、requests、bs4库爬取百科词条
基于Python、requests、bs4库爬取百科词条
一、分析百科词条URL
1、在百科里输入词条,如:网络爬虫。显示如下图
【基于Python、requests、bs4库爬取百科词条】
文章图片
在地址栏中的url为: https://baike.baidu.com/item/网络爬虫,因此可按如下方式构建初始URL
url = "https://baike.baidu.com/item/{}".format(keyword)
二、利用requests获取响应并通过bs4库可以将信息以节点方式返回 利用requests库中的get函数获取页面信息,如下所示:
def getHTMLText(url):
i = 0
while i<3:#最大重连次数
try:
#模拟浏览器获取百科词条信息
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0;
Win64;
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
r = requests.get(url, headers=headers, timeout=5)
r.raise_for_status()# 如果不是200,产生异常requests.HTTPError
r.encoding = r.apparent_encoding # 改变编码方式
soup = BeautifulSoup(r.text, 'html.parser') #利用bs4解析网页
return soup
except requests.exceptions.RequestException:
i += 1
return '连接超时'
四、分析具体节点,提取所需信息 利用火狐浏览器,按F12进入开发者模式,查看具体网页元素信息,如下图
文章图片
由图可以看出,百科词条的简介信息主要在两个dl节点中,且具有basicInfo-block basicInfo-left和basicInfo-block basicInfo-right属性,因词利用下面的方法获取该词条具体简介信息。
objSoup = getHTMLText(url)# 利用bs4库解析传入的URL
test_left = objSoup.find('dl', attrs='basicInfo-block basicInfo-left')# 获取百科页面左部植物属性
test_right = objSoup.find('dl', attrs='basicInfo-block basicInfo-right')# 获取百科页面右部植物属性
推荐阅读
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- python学习之|python学习之 实现QQ自动发送消息
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。