- scrapy.cfg:基本设置
- items.py:抓取条目标构造定义
- middlewares.py:中心件定义,词攀例中无需修改
- pipelines.py:管道定义,用于抓取数据后的处理
- settings.py:全局设置
- spiders\photo.py:爬虫主体,定义若何抓取须要的数据
items.py 中创建一个TuchongItem类并定义须要的属性,属性持续自 scrapy.Field 值可所以字符、数字或者列表或字典等等:
别的,大年夜多半网站都有反爬虫的 Robots.txt 清除协定,设置 ROBOTSTXT_OBEY = True 可以忽视这些协定,是的,这似乎只是个正人协定。如不雅网站设置了浏览器User Agent或者IP地址检测来反爬虫,那就须要更高等的Scrapy功能,本文不做讲解。
- import scrapy
- class TuchongItem(scrapy.Item):
- post_id = scrapy.Field()
- site_id = scrapy.Field()
- title = scrapy.Field()
- type = scrapy.Field()
- url = scrapy.Field()
- image_count = scrapy.Field()
- images = scrapy.Field()
- tags = scrapy.Field()
- excerpt = scrapy.Field()
- ...
也就是并没有实际的图集内容,是以可以断定页面应用了Ajax请求,只有在浏览器载入页面时才会请求图集内容并参加div.widget-gallery中,经由过程开辟者对象查看XHR请求地址为:
这些属性的值将在爬虫主体中付与。
函数 parse 是处理请求内容的默认回调函数,参数 response 为请求内容,页面内容文本保存在 response.body 中,我们须要对默认代码稍加修改,让其知足多页面轮回发送请求,这须要重载 start_requests 函数,经由过程轮回语句构建多页的链接请求,修改后代码如下:
spiders\photo.py 这个文件是经由过程敕令 scrapy genspider photo tuchong.com 主动创建的,琅绫擎的初始内容如下:
- import scrapy
- class PhotoSpider(scrapy.Spider):
- name = 'photo'
- allowed_domains = ['tuchong.com']
- start_urls = ['http://tuchong.com/']
- def parse(self, response):
- pass
爬虫名 name,许可的域名 allowed_domains(如不雅链接不属于此域名将丢弃,允很多个) ,肇端地址 start_urls 将大年夜这里定义的地址抓取(允很多个)