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 从远程服务器下载东西的代码
Feb 10 Python
Python Requests安装与简单运用
Apr 07 Python
python中string模块各属性以及函数的用法介绍
May 30 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Python面向对象实现方法总结
Aug 12 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
python实现简单区块链结构
Apr 25 Python
python的列表生成式,生成器和generator对象你了解吗
Mar 16 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将文本文件转换csv输出的方法
2014/12/31 PHP
php自定义hash函数实例
2015/05/05 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python定时执行之Timer用法示例
2015/05/27 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
python爬虫基本知识
2018/03/05 Python
python读取Excel实例详解
2018/08/17 Python
python批量修改xml属性的实现方式
2020/03/05 Python
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
《月迹》教学反思
2014/02/19 职场文书
继承公证书
2014/04/09 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
2014年财务科工作总结
2014/11/11 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
python文件与路径操作神器 pathlib
2022/04/01 Python