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