我使用的是start_urls
字段中包含多个url的通用spider。
是否可以为每个URL导出一个json
文件?
据我所知,只能为一个特定的输出文件设置一个路径。
任何解决这个问题的想法都会得到奖励!
编辑:这是我的蜘蛛类:
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class MySpider(CrawlSpider):
name = 'my_spider'
start_urls = start_urls = ['www.domain1.com','www.domain2.com',
'www.domain3.com']
custom_settings = {
'FEED_EXPORT_ENCODING': 'utf-8',
'DEPTH_LIMIT': '1',
'FEED_URI': 'file:///C:/path/to/result.json',
}
rules = (
Rule(LinkExtractor(allow=r"abc"), callback='parse_item', follow=True),
)
def parse_item(self, response):
all_text = response.xpath("//p/text()").getall()
yield {
"text": " ".join(all_text),
"url": response.url,
}
1条答案
按热度按时间iqjalb3h1#
第一个选项
您可以将蜘蛛中的项目保存为Scrapy教程,例如:
变量
DICT
只用于指定JSON文件名,但您也可以使用域作为文件名。第二个选项
您可以尝试在
pipelines.py
中使用process_item
,如下所示:item['filename']
用于保存每个start_url
的文件名,您也需要设置items.py
,例如:你蜘蛛:
在运行之前,您需要在设置中添加管道。