J'ai une liste d'URL, chacune associée à un ID unique. Je veux utiliser scrapy pour télécharger chacune des URL et les enregistrer dans un fichier nommé d'après leur identifiant unique. Je suis passé par un tutoriel de base et avoir le code suivant, mais ne sais pas comment puis-je obtenir le uid lors de l'enregistrement du fichier après l'analyse syntaxique -Choisissez un nom de fichier dans scrapy
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)
Vous ne savez pas pourquoi cette question a été mise en baisse. @ tomáš-linhart J'avais essayé cette solution plus tôt mais cela m'a donné une erreur clé. C'est pourquoi j'ai modifié mon code ci-dessus et supprimé la ligne contenant exactement ce que vous avez suggéré. Les downvotes sont frustrants si les raisons ne sont pas présentes :( – comiventor