Python 3.x 在剪贴簿中选择文件名
我有一个URL列表,每个URL都与一个唯一的ID关联。我想使用scrapy下载每个URL,并将它们保存在一个以其唯一ID命名的文件中。我阅读了一个基本教程,有以下代码,但不确定在解析后保存文件时如何获取uid-Python 3.x 在剪贴簿中选择文件名,python-3.x,scrapy,web-crawler,scrapy-spider,Python 3.x,Scrapy,Web Crawler,Scrapy Spider,我有一个URL列表,每个URL都与一个唯一的ID关联。我想使用scrapy下载每个URL,并将它们保存在一个以其唯一ID命名的文件中。我阅读了一个基本教程,有以下代码,但不确定在解析后保存文件时如何获取uid- import scrapy import json class QuotesSpider(scrapy.Spider): name = "quotes" def start_requests(self): urls = json.load(open('
import scrapy
import json
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = json.load(open('url_info.json'))
for entity in urls:
url = entity['url']
uid = entity['uid'] # unique id
request_object = scrapy.Request(url=url, callback=self.parse)
request_object.meta['uid'] = uid
yield request_object
def parse(self, response):
filename = 'quotes-unique-id.html' # % can I access uid here
with open(filename, 'wb') as f:
f.write(response.body)
您可以从
parse
方法中的meta
属性获得uid
,如下所示:
filename = 'quotes-{}.html'.format(response.meta['uid'])
或者
f“quotes-{response.meta['uid']}”
如果你运行的是py3.6:)@Granitosaurus真的很酷,我不知道。可能是时候从2.7版开始切换了…:-)不知道为什么这个问题被否决了@tomáš-linhart我之前尝试过这个解决方案,但它给了我关键的错误。这就是为什么我编辑了上面的代码并删除了包含您建议内容的行。如果没有理由,那么否决票是令人沮丧的:(