一、spider的作用和功能
- 根据url生成Request并指定回调方法处理Response。第一个Request是通过start_requests()产生的;
- 在回调方法中,解析页面的Response,返回Item实例或者Request实例,或者这两种实例的可迭代对象;
- 在回调方法中,通常使用Selectors(也可以使用BeautifulSoup,lxml等)来提取数据;
- 最后spider会return item给Pipline完成数据的清洗,持久化等操作。
二、源码解析
类scrapy.spiders.Spider 是最简单的spider,所有的spider包括自己定义的和scrapy提供的都会继承它。它只是提供最基本的特性,也是我最常用的spider类。
源码:
"""
Base class for Scrapy spiders
See documentation in docs/topics/spiders.rst
"""
import logging
import warnings
from scrapy import signals
from scrapy.http import Request
from scrapy.utils.trackref import object_ref
from scrapy.utils.url import url_is_from_spider
from scrapy.utils.deprecate import create_deprecated_class
from scrapy.exceptions import ScrapyDeprecationWarning
from scrapy.utils.deprecate import method_is_overridden
class Spider(object_ref):
"""
Base class for scrapy spiders. All spiders must inherit from this
class.
"""
name = None
custom_settings = None
def __init__(self, name=None, **kwargs):
if name is not None:
self.name = name
elif not getattr(self,