lit*_*e06 5 python json scrapy
我对 Scrapy 很陌生。我正在考虑使用它来抓取整个网站的链接,在其中我会将项目输出到多个 JSON 文件中。因此,我可以将它们上传到 Amazon Cloud Search 以进行索引。是否可以将项目拆分为多个文件而不是最终只有一个大文件?根据我的阅读,项目导出器只能输出到每个蜘蛛的一个文件。但我只使用一个 CrawlSpider 来完成这项任务。如果我可以对每个文件中包含的项目数量设置一个限制,比如 500 或 1000,那就太好了。
这是我到目前为止设置的代码(基于教程中使用的 Dmoz.org):
dmoz_spider.py
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from tutorial.items import DmozItem
class DmozSpider(CrawlSpider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/",
]
rules = [Rule(LinkExtractor(), callback='parse_item', follow=True)]
def parse_item(self, response):
for sel in response.xpath('//ul/li'):
item = DmozItem()
item['title'] = sel.xpath('a/text()').extract()
item['link'] = sel.xpath('a/@href').extract()
item['desc'] = sel.xpath('text()').extract()
yield item
Run Code Online (Sandbox Code Playgroud)
项目.py
import scrapy
class DmozItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field()
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助。
我认为内置提要导出器不支持写入多个文件。
一种选择是基本上以jsonlines格式导出到单个文件中,每行一个 JSON 对象,这样可以方便地进行管道传输和拆分。
然后,在爬取完成后,您可以单独读取所需块中的文件并写入单独的 JSON 文件。
这样我就可以将它们上传到 Amazon Cloud Search 进行索引。
请注意,有一个直接的Amazon S3 导出器(不确定是否有帮助,仅供参考)。
| 归档时间: |
|
| 查看次数: |
3116 次 |
| 最近记录: |