首页 > 解决方案 > 有没有办法获取从其中抓取链接的 URL?

问题描述

我写了一个蜘蛛,它会爬我的网站并刮掉一堆标签。我现在正试图让它返回发现链接的 URL。

例如:

www.example.com/product/123被发现于www.example.com/page/2

当scrapy从我那里抓取信息时,/product/123我想要一个“Scraped From”并返回的字段/page/2。对于每个被抓取的 URL,我想找到找到该 URL 的原始页面。我一直在翻阅文档,似乎无法弄清楚这一点。任何帮助,将不胜感激!

标签: scrapy

解决方案


最简单的方法是使用 response.headers。应该有一个引用标题。

referer = response.headers['Referer']

您还可以使用 meta 将信息传递到下一个 URL。

def parse(self, response):
    product_url = response.css('#url').get()
    yield scrapy.Request(product_url, callback=self.parse_product, meta={'referer': response.url})

def parse_product(self, response):
    referer = response.meta['referer']
    item = ItemName()
    item['referer'] = referer
    yield item

推荐阅读