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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线