2017-02-24 48 views
1

我对Python和Scrapy很新颖,我认为答案应该很简单,但是很难找出自己的答案。该代码采取所有链接,跟随他们并记录文章的标题。如何将我获得的网址传递给我的物品?我想保存它与文章标题一起使用的短链接。谢谢Scrapy - 在保存链接的同时遵循它们

def parse(self, response): 
    for url in response.xpath("//li[@id]/@data-shortlink").extract(): 
     yield scrapy.Request(url, callback=self.get_details) 

def get_details(self, response): 
     article = ArticleItem() 
     article['title'] = response.xpath("//h1/text()").extract() 
     yield article 

回答

1

,因为它包含了Response() object中,你可以使用response.url获得的网址:

def get_details(self, response): 
     article = ArticleItem() 
     article['title'] = response.xpath("//h1/text()").extract() 
     article['url'] = response.url 
     yield article 
+0

的伟大工程。有没有办法让它复制短链接我提供解析,而不是它实际遵循的完整链接? – yurashark

+0

我不确定是否诚实。我建议试验'print()'出不同的[Response子类方法](https://doc.scrapy.org/en/latest/topics/request-response.html#topics-request-response-ref-response -subclasses)。或者,如果它是一个arg,你提供解析(),那么它似乎你当然也应该能够传递给get_details ... – Roundel