崔庆才老师爬虫的学习笔记。

一、基本使用

1、scrapy中文文档

文档地址:http://scrapy-chs.readthedocs.io/zh_CN/latest

其中spider部分:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/spiders.html

2、Spider中文文档0.25.0里未翻译的部分简介

  • custom_settings 类里面的一个特定设置,可以覆盖settings里面的全局设置。以字典形式覆盖即可,例如:
1
2
3
4
5
6
custom_settings = {
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
}
  • crawler 是Crawler类的一个实例对象,扩展访问scrapy核心组件和挂载scrapy的唯一途径。

  • settings 是Settings类的一个实例对象,可以控制包括核心插件、pipeline、其他spider组件的相应的配置。

  • from_crawler() 是一个类方法,在类里面定义这个方法,可以通过这个类拿到全局的settings的一些设置。例如:

1
2
3
4
5
6
7
8
9
10
11
def __init__(self, mongo_uri, mongo_db, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.mongo_uri = mongo_uri
self.mongo_db = mongo_db

@classmethod
def from_crawler(cls, crawler):
return cls(
mongo_uri=crawler.settings.get('MONGO_URI'),
mongo_db=crawler.settings.get('MONGO_DB')
)

3、Spider英文文档1.5.0中增加部分简介

  • logger 可以直接调用logger输出日志,例如:
1
self.logger.info(response.status)
  • Spider arguments 可以通过命令行scrapy crawl myspider -a category=electronics,指定category传入一些相应的额外参数。例如:
1
2
3
4
5
6
7
8
9
import scrapy

class MySpider(scrapy.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]
# ...

4、特定的spider

后面还提供了一些特定的spider,应用于一些定制化的需求。例如:CrawlSpider、XMLFeedSpider、CSVFeedSpider、SitemapSpider。

持续更新…

最后更新: 2018年08月16日 13:05

原始链接: http://pythonfood.github.io/2018/07/05/Scrapy中Spiders用法/

× 多少都行~
打赏二维码