【Python】爬虫-2

8、 urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时候,并以此可以来设置一个URL的headers),urllib.urlopen只接收一个url

9、 urllib 有urlencode,urllib2没有,这也是为什么总是urllib,urllib2常会一起使用的原因

10、      urlencode不能直接处理unicode对象,所以如果是unicode,需要先编码,有unicode转到utf8,举例:

urllib.urlencode (u'bl'.encode('utf-8')) 

11、      编解码示例 urllib.quote(空格用%20代替)和urllib.urlencode(空格用+代替)都是编码,但用法不一样

【Python】爬虫-2

8、 IV. urlretrieve() urlretrieve多数适用单纯的只下载的功能或者显示下载的进度,直接把url链接网页内容下载到retrieve_index.html里了,适用于单纯的下载的功能

 【Python】爬虫-2

8、 在对字典数据编码时候,用到的是urllib.urlencode()

9、 Scrapy组成

1)引擎(Scrapy Engine:用来处理整个系统的数据流处理,触发事务。 
2)调度器(Scheduler):用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。可以决定下载器下一步要下载的网址并去除重复的网址。 
3)下载器(Downloader):用来下载网页内容,并将网页内容返回给爬虫(Spiders)。 
4)爬虫(Spiders):从特定的网页中提取出需要的信息。可以用它来制定特定网页的解析规则,提取特定的实体(Item)或URL链接。每一个Spider负责一个或多个特定的网站。 
5)项目管道(Item Pipeline):负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。 
6)下载器中间件(Downloader Middlewares):位于Scrapy引擎和下载器之间的子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。 
7)爬虫中间件(Spider Middlewares):介于Scrapy引擎和爬虫之间的框架,主要工作是处理爬虫的响应输入和请求输出。 
8)调度中间件(Scheduler Middewares):介于Scrapy引擎和调度之间的中间件,处理从Scrapy引擎发送到调度的请求和响应。

10、      Scrapy执行流程

(1)   创建一个Scrapy项目

(2)   引擎从调度器取出一个URL用于抓取

(3)   引擎把URL封装成一个Requests请求然后传给下载器把相应结果下载下来并封装成应答包

(4)   解析应答包

(5)   定义解析规则(Item)

(6)   根据定义规则解析内容后交给实体管道等待处理

(7)   解析出URL交给调度器继续等待被抓取

【Python】爬虫-2