zoukankan      html  css  js  c++  java
  • python爬虫之spider用法

    Spider类定义了如何爬取某个网站, 包括爬取的动作以及如何从网页内容中提取结构化的数据, 总的来说spider就是定义爬取的动作以及分析某个网页.

    工作流程分析 :

      1. 以初始的URLRequest, 并设置回调函数, 当该requeset下载完毕并返回时, 将生成response, 并作为参数传递给回调函数. spider中初始的request是通过start_requests()来获取的. start_requests()获取start_urls中的URL, 并以parse以回调函数生成Request

      2. 在回调函数内分析返回的网页内容, 可以返回item对象, 或者Dict,或者Request, 以及是一个包含三者的可迭代的容器, 返回的Request对象之后会经过Scrapy处理, 下载相应的内容, 并调用设置的callback函数.

      3. 在回调函数, 可以通过lxml, bs4, xpath, css等方法获取我们想要的内容生成item

      4. 最后将item传送给pipeline处理

    源码分析 :

      在spiders下写爬虫的时候, 并没有写start_request来处理start_urls处理start_urls中的url, 这是因为在继承的scrapy.Spider中已经写过了

      在上述源码中可以看出在父类里实现了start_requests方法, 通过make_requests_from_url做了Request请求

      上图中, parse回调函数中的response就是父类中start_requests方法调用make_requests_from_url返回的结果, 并且在parse回调函数中可以继续返回Request, 就像代码中yield request()并设置回调函数.

    spider内的一些常用属性 :

      所有自己写的爬虫都是继承于spider.Spider这个类

      name:

        定义爬虫名字, 通过命令启动的额时候用的就是这个名字, 这个名字必须唯一

      allowed_domains:

        包含了spider允许爬取的域名列表. 当offsiteMiddleware启用时, 域名不在列表中URL不会被访问, 所以在爬虫文件中, 每次生成Request请求时都会进行和这里的域名进行判断.

      start_urls:

        其实的URL列表

        这里会通过spider.Spider方法调用start_request循环请求这个列表中的每个地址

      custom_settings:

        自定义配置, 可以覆盖settings的配置, 主要用于当我们队怕重有特定需求设置的时候

        设置的以字典的方式设置: custom_settings = {}

      from_crawler:

        一个类方法, 可以通过crawler.settings.get()这种方式获取settings配置文件中的信息. 同时这个也可以在pipeline中使用

      start_requests():

        此方法必须返回一个可迭代对象, 该对象包含了spider用于爬取的第一个Request请求

        此方法是在被继承的父类中spider.Spider中写的, 默认是通过get请求, 如果需要修改最开始的这个请求, 可以重写这个方法, 如想通过post请求

      make_requests_from_url(url):

        此房也是在父类中start_requests调用的, 可以重写

      parse(response):

        默认的回调函数

        负责处理response并返回处理的数据以及跟进的url

        该方法以及其他的Request回调函数必须返回一个而包含Request或者item的可迭代对象.

  • 相关阅读:
    安全麻烦不断 Mozilla再次推迟火狐浏览器3.1版发布 狼人:
    法国海军计算机遭病毒入侵 战机受影响停飞两天 狼人:
    金融危机下 如何看待SMB安全变化 狼人:
    卡巴斯基遭黑客SQL入侵 曝光敏感信息 狼人:
    经济危机致高科技人才变身网络黑客 狼人:
    McAfee 09安全威胁预测:低迷经济推动病毒流行 狼人:
    Windows 7用户帐户控制功能将在RC版修正 狼人:
    微软否认Windows 7存在缺陷 称UAC不会被黑客利用 狼人:
    选中网页内容safari浏览器复制粘贴
    插入容器STL学习笔记(八) 序列式容器 共性
  • 原文地址:https://www.cnblogs.com/dong-/p/10306046.html
Copyright © 2011-2022 走看看