网页抓取数据百度百科(聊一聊Python与网络爬虫的主要框架程序的特点及应用)
优采云 发布时间: 2021-10-24 17:12网页抓取数据百度百科(聊一聊Python与网络爬虫的主要框架程序的特点及应用)
谈谈 Python 和网络爬虫。
1、爬虫的定义
爬虫:一种自动爬取互联网数据的程序。
2、爬虫的主要框架
爬虫程序的主要框架如上图所示。爬虫调度器通过URL管理器获取要爬取的URL链接。如果URL管理器中存在要爬取的URL链接,则爬虫调度器调用网页下载器下载对应的网页,然后调用网页解析器解析网页,并在网页中添加新的URL到 URL 管理器输出有价值的数据。
3、爬虫时序图
4、网址管理器
URL管理器对要爬取的URL集合和已爬取的URL集合进行管理,防止重复爬取和循环爬取。URL管理器的主要功能如下图所示:
在 URL 管理器的实现方面,Python 主要使用内存(集合)和关系数据库(MySQL)。对于小程序,一般在内存中实现,Python 内置的 set() 类型可以自动判断元素是否重复。对于较大的程序,通常使用数据库。
5、网页下载器
Python 中的网页下载器主要使用 urllib 库,它是 Python 自带的一个模块。对于2.x版本中的urllib2库,在python3.x中,以及它的request等子模块中都集成到urllib中。urllib 中的 urlopen 函数用于打开 url 并获取 url 数据。urlopen 函数的参数可以是 url 链接或请求对象。对于简单的网页,直接使用url字符串作为参数就可以了,但是对于有反爬虫机制的复杂网页,使用urlopen函数时,需要添加http头。对于有登录机制的网页,需要设置cookies。
6、网页解析器
网页解析器从网页下载器下载的URL数据中提取有价值的数据和新的URL。对于数据提取,可以使用正则表达式、BeautifulSoup 等方法。正则表达式使用基于字符串的模糊匹配,对特征鲜明的目标数据有较好的效果,但通用性不强。BeautifulSoup 是一个第三方模块,用于对 URL 内容进行结构化分析。下载的网页内容被解析为DOM树。下图是百度百科中使用BeautifulSoup打印的网页的一部分输出。
关于BeautifulSoup的具体使用,后面会在文章写。以下代码使用python抓取百度百科英雄联盟条目中其他与联盟相关的条目,并将这些条目保存在新创建的excel中。在代码上:
from bs4 import BeautifulSoup
import re
import xlrd
import xlwt
from urllib.request import urlopen
excelFile=xlwt.Workbook()
sheet=excelFile.add_sheet('league of legend')
## 百度百科:英雄联盟##
html=urlopen("http://baike.baidu.com/subview/3049782/11262116.htm")
bsObj=BeautifulSoup(html.read(),"html.parser")
#print(bsObj.prettify())
row=0
for node in bsObj.find("div",{"class":"main-content"}).findAll("div",{"class":"para"}):
links=node.findAll("a",href=re.compile("^(/view/)[0-9]+\.htm$"))
for link in links:
if 'href' in link.attrs:
print(link.attrs['href'],link.get_text())
sheet.write(row,0,link.attrs['href'])
sheet.write(row,1,link.get_text())
row=row+1
excelFile.save('E:\Project\Python\lol.xls')
部分输出截图如下:
excel部分截图如下:
以上就是本文的全部内容,希望对大家学习Python网络爬虫有所帮助。