美文网首页
2018-11-05

2018-11-05

作者: 会会_3a05 | 来源:发表于2018-12-22 16:35 被阅读0次

    class RandomProxiesDownloadmidderware(object):

    def __init__(self, proxies):
    
        self.proxies= proxies
    

    @classmethod

    def from_crawler(cls, crawler):
    
        proxies= crawler.sittings['PROXIES']
    
        return cls(proxies)
    
    def process_request(self, spider, request):
    
        dict_proxy = random.choice(self.proxies)
    

    REQUEST

    url: 就是需要请求,并进行下一步处理的url

    callback: 指定该请求返回的Response,由那个函数来处理。

    method: 请求一般不需要指定,默认GET方法,可设置为"GET", "POST", "PUT"等,且保证字符串大写

    headers: 请求时,包含的头文件。一般不需要。内容一般如下:# 自己写过爬虫的肯定知道Host:media.readthedocs.orgUser-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0Accept: text/css,/;q=0.1Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateReferer:http://scrapy-chs.readthedocs.org/zh_CN/0.24/Cookie: _ga=GA1.2.1612165614.1415584110;Connection: keep-aliveIf-Modified-Since: Mon, 25 Aug 2014 21:59:35 GMTCache-Control: max-age=0

    meta: 比较常用,在不同的请求之间传递数据使用的。字典dict型

    request_with_cookies = Request(

      url="http://www.example.com",
    
      cookies={'currency': 'USD', 'country': 'UY'},
    
      meta={'dont_merge_cookies': True}
    

    )

    encoding: 使用默认的 'utf-8' 就行。

    dont_filter: 表明该请求不由调度器过滤。这是当你想使用多次执行相同的请求,忽略重复的过滤器。默认为False。

    errback: 指定错误处理函数

    RESPONSE

    status: 响应码

    _set_body(body): 响应体

    _set_url(url):响应url

    self.request= request (request对象)

    self.headers= Headers (响应头)

    scrapy框架

    Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

    Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

    Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

    Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

    Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

    Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

    Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

    安装方式 sudo pip3 install scrapy

    新建项目

          scrapy startproject 爬虫项目名称
    
         进入项目,再次进入项目文件夹,在进入spdeers执行以下命令
    
                   scrapy genspider 爬虫文件名称 域名
    
      使用pycharm打开,配置 虚拟环境,配置需要的settings,在爬虫文件中爬取所需要的数据,以及起始的url,在items中定义字段
    

    ** yield 的作用就是把一个函数变成一个 generator(生成器),带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator**,带有yeild的函数遇到yeild的时候就返回一个迭代值,下次迭代时,代码从 yield 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。

    scrapy crawl 项目名称启动项目

    相关文章

      网友评论

          本文标题:2018-11-05

          本文链接:https://www.haomeiwen.com/subject/wfjexqtx.html