Python网络爬虫实例讲解


Posted in Python onApril 28, 2016

聊一聊Python与网络爬虫。

1、爬虫的定义

爬虫:自动抓取互联网数据的程序。

2、爬虫的主要框架

Python网络爬虫实例讲解

爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存在待爬取的URL链接,爬虫调度器调用网页下载器下载相应网页,然后调用网页解析器解析该网页,并将该网页中新的URL添加到URL管理器中,将有价值的数据输出。

3、爬虫的时序图

Python网络爬虫实例讲解

4、URL管理器

URL管理器管理待抓取的URL集合和已抓取的URL集合,防止重复抓取与循环抓取。URL管理器的主要职能如下图所示:

Python网络爬虫实例讲解

URL管理器在实现方式上,Python中主要采用内存(set)、和关系数据库(MySQL)。对于小型程序,一般在内存中实现,Python内置的set()类型能够自动判断元素是否重复。对于大一点的程序,一般使用数据库来实现。

5、网页下载器

Python中的网页下载器主要使用urllib库,这是python自带的模块。对于2.x版本中的urllib2库,在python3.x中集成到urllib中,在其request等子模块中。urllib中的urlopen函数用于打开url,并获取url数据。urlopen函数的参数可以是url链接,也可以使request对象,对于简单的网页,直接使用url字符串做参数就已足够,但对于复杂的网页,设有防爬虫机制的网页,再使用urlopen函数时,需要添加http header。对于带有登录机制的网页,需要设置cookie。

6、网页解析器

网页解析器从网页下载器下载到的url数据中提取有价值的数据和新的url。对于数据的提取,可以使用正则表达式和BeautifulSoup等方法。正则表达式使用基于字符串的模糊匹配,对于特点比较鲜明的目标数据具有较好的作用,但通用性不高。BeautifulSoup是第三方模块,用于结构化解析url内容。将下载到的网页内容解析为DOM树,下图为使用BeautifulSoup打印抓取到的百度百科中某网页的输出的一部分。

Python网络爬虫实例讲解

关于BeautifulSoup的具体使用,在以后的文章中再写。下面的代码使用python抓取百度百科中英雄联盟词条中的其他与英雄联盟相关的词条,并将这些词条保存在新建的excel中。上代码:

from bs4 import BeautifulSoup 
import re 
import xlrd 
<span style="font-size:18px;">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')</span>

输出的部分截图如下:

Python网络爬虫实例讲解

excel部分的截图如下:

Python网络爬虫实例讲解

以上就是本文的全部内容,希望对大家学习Python网络爬虫有所帮助。

Python 相关文章推荐
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python异常处理操作实例详解
May 10 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
python的debug实用工具 pdb详解
Jul 12 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python函数参数定义及传递方式解析
Jun 10 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
Python如何定义有可选参数的元类
Jul 31 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 07 Python
Python脚本实现自动发带图的微博
Apr 27 #Python
Python实现新浪博客备份的方法
Apr 27 #Python
Python2.7简单连接与操作MySQL的方法
Apr 27 #Python
Python判断文本中消息重复次数的方法
Apr 27 #Python
python脚本监控docker容器
Apr 27 #Python
Python多进程同步简单实现代码
Apr 27 #Python
Python对象转JSON字符串的方法
Apr 27 #Python
You might like
PHP 开源AJAX框架14种
2009/08/24 PHP
php 文件上传系统手记
2009/10/26 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
用Python进行TCP网络编程的教程
2015/04/29 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Django密码系统实现过程详解
2019/07/19 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
pandas实现导出数据的四种方式
2020/12/13 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
中文专业学生自我评价范文
2014/02/06 职场文书
降消项目实施方案
2014/03/30 职场文书
鉴定评语大全
2014/05/05 职场文书
反四风对照检查材料
2014/09/22 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书