基于Python、requests、bs4库爬取百科词条

基于Python、requests、bs4库爬取百科词条 一、分析百科词条URL 1、在百科里输入词条,如:网络爬虫。显示如下图
【基于Python、requests、bs4库爬取百科词条】基于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进入开发者模式,查看具体网页元素信息,如下图基于Python、requests、bs4库爬取百科词条
文章图片

由图可以看出,百科词条的简介信息主要在两个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')# 获取百科页面右部植物属性

    推荐阅读