- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第七章Python爬虫基础
爬虫概述urllib库使用urllib浏览器模拟
爬取网页与实战
正则表达式图片爬虫项目训练
实战
01
行骨
小结
爬虫概述及应用
网络爬虫(WebSpider),又被称为网页蜘蛛,是一种按照一定的规则,自
动地抓取网站信息的程序或者脚本。网络蜘蛛是一个很形象的名字,如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络爬虫是一个自动提取网页的程序,网络爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
爬虫概述
◆聚焦网络爬虫
有选择性地爬行那些与预先定义好的主题相关页面
的网络爬虫。
◆增量式网络爬虫
对已下载网页采取增量式更新和只爬行新产生的或者已经发生
变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽
可能新的页面。
◆通用网络爬虫
爬行对象从一些种子URL
站点有哪些信誉好的足球投注网站引擎和大型Web
◆深层网络爬虫
04可以爬取互联网中深层页面。
扩充到整个Web,主要为门户
服务提供商采集数据。
02
03
爬虫的分类
爬虫分类
01
在网络爬虫的系统框架中,主要由控制器、解析器、资源库三部分组成。控制
器的主要工作是负责给多线程中的各个爬虫线程分配工作任务;解析器的主要工作是下载网页,进行页面的处理,将一些JS脚本标签、CSS代码内容、空格字符、
HTML标签等内容处理掉,爬虫的基本工作是由解析器完成;资源库是用来存放下
载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索
引。
网络爬虫结构
①首先选取一部分精心挑选的种子URL;
②将这些URL放入待抓取URL队列;
③从待抓取URL队列中取出待抓取的URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来后进行解析,
存储进已下载网页库中。此外,将这些URL放进已抓取URL队列;
④分析已抓取URL队列中的URL,提取其中待抓取的URL,并且将其放入待抓取URL队列,从而进入下一个循环。
网络爬虫工作基本流程
待抓取URL
网页内容
已下载URL放入已抓队列
提取新的URL加入待抓队列
已抓取的
URL
信息存储
种子URL
urllib库
用try进行捕捉处理;
④urllib.robotparser模块用来解析robots.txt文本文件,它提供了一个单
独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面,在爬取网页数据时经常使用到前三个模块。
●urllib库是Python3.X内置的HTTP请求库,是一个URL处理包。在Python2.X中,有urllib和urllib2两种库,到了Python3.X中,已经将这两个库统一为urllib库。
●urllib库提供了四大模块:
urllib.request请求模块,用来打开和读取URLs;
urllib.parse解析模块,提供解析URLs的方法;
urllib.error异常处理模块,包含一些由urllib.request产生的错误,可
urllib库
①
②
③
urllib.request模块提供了最基本的构造HTTP(或其他协议如FTP)请求的方法,利
用它可以模拟浏览器的一个请求发起过程,利用不同的协议去获取URL信息。
urllib.request模块提供一个基础urlopen()函数,通过向指定的URL发出请求来获取数据,返回一个http.client.HTTPResponse对象的数据。http.client.HTTPResponse对象包括read()、readinto()、getheader()、getheaders()、fileno()、msg()、version()、
status()、reason()、debuglevel()和closed()等函数。
一般情况下,爬取网页数据时需要使用urlopen()函数获得数据,然后使用read()函数读取urlopen()返回的数据,读取的是二进制字节流,接下来还需要使用decode()函数以指定的编码格式将二进制字节流解码转换成所能读懂的网页代码。
urllib.request模块
——常用方法
urlopen()方法
文档评论(0)