Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在剪贴簿中选择文件名_Python 3.x_Scrapy_Web Crawler_Scrapy Spider - Fatal编程技术网

Python 3.x 在剪贴簿中选择文件名

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('

我有一个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('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我之前尝试过这个解决方案,但它给了我关键的错误。这就是为什么我编辑了上面的代码并删除了包含您建议内容的行。如果没有理由,那么否决票是令人沮丧的:(