Scrapy 保存爬取数据,Item
对象是自定义的python字典,您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field
赋值的属性)一般来说,Spider
将会将爬取到的数据以Item
对象返回。
Scrapy 保存爬取数据 – 使用item
Item
对象是自定义的python字典,您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field
赋值的属性):
>>> item = DmozItem()
>>> item['title'] = 'Example title'
>>> item['title']
'Example title'
一般来说,Spider
将会将爬取到的数据以Item
对象返回。所以为了将爬取的数据返回,我们最终的代码将是:
import scrapy
from tutorial.items import TutorialItem
class DmozSpider(scrapy.Spider):
name = "geekdocs"
allowed_domains = ["geek-docs.com"]
start_urls = [
"https://geek-docs.com/vulkan/vulkan-tutorial/vulkan-understand-instance.html",
]
def parse(self, response):
for sel in response.xpath('//ul/li'):
item = TutorialItem()
item['title'] = sel.xpath('a/text()').extract()
item['link'] = sel.xpath('a/@href').extract()
item['desc'] = sel.xpath('text()').extract()
yield item
您可以在 dirbot 项目中找到一个具有完整功能的spider。该项目可以通过 https://github.com/scrapy/dirbot 找到。
Scrapy 保存爬取数据 – 保存爬取到的数据
最简单存储爬取的数据的方式是使用如下命令:
scrapy crawl dmoz -o items.json
运行成功后,在TutorialItem
目录中将生成items.json
文件:
该命令将采用JSON 格式对爬取的数据进行序列化,生成 items.json
文件。在小规模的项目中,这种存储方式已经足够。如果需要对爬取到的item做更多更为复杂的操作,您可以编写Item Pipeline
。
文件内容如下: