python抓取网页数据(聊一聊Python与网络爬虫的主要框架程序的特点及应用)

优采云 发布时间: 2021-10-25 05:03

  python抓取网页数据(聊一聊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网络爬虫有所帮助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线