3. Spiders

Scrapy的核心Spider类。配置需要获取的网站url,以及分析网页的地方。

Spider的作用如下:

  1. 以初始的URL初始化Request,并设置回调函数。 当该request下载完毕并返回时,将生成response,并作为参数传给该回调函数。

    spider中初始的request是通过调用 start_requests() 来获取的。 start_requests() 读取 start_urls 中的URL, 并以 parse 为回调函数生成 Request 。

  2. 在回调函数内分析返回的(网页)内容,返回 Item 对象或者 Request 或者一个包括二者的可迭代容器。 返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数(函数可相同)。

  3. 在回调函数内,您可以使用 选择器(Selectors) (您也可以使用BeautifulSoup, lxml 或者您想用的任何解析器) 来分析网页内容,并根据分析的数据生成item。

  4. 最后,由spider返回的item将被存到数据库(由某些 Item Pipeline 处理)或使用 Feed exports 存入到文件中。

Spider参数

  通过scrapy -a 传参数,在spider构造函数中获取参数

  scrapy crawl myspider -a category=electronics
import scrapy

class MySpider(Spider):
    name = 'myspider'

    def __init__(self, category=None, *args, **kwargs):
        super(MySpider, self).__init__(*args, **kwargs)
        self.start_urls = ['http://www.example.com/categories/%s' % category]

 Spider类:

  name:定义spider名字的字符串(string),必须是唯一的。 

 allowed_domains(非必须):

  包含了spider允许爬取的域名(domain)列表(list)。 当 OffsiteMiddleware 启用时, 域名不在列表中的URL不会被跟进。

 start_urls:

  当没有制定特定的URL时,spider将从该列表中开始进行爬取。

 

posted @ 2018-06-08 16:26  小阿Q的博客  阅读(181)  评论(0编辑  收藏  举报