我正在使用Scrapy抓取一些页面。我从Excel工作表中获取start_urls,我需要将该URL保存在项目中。
class abc_Spider(BaseSpider):
name = 'abc'
allowed_domains = ['abc.com']
wb = xlrd.open_workbook(path + '/somefile.xlsx')
wb.sheet_names()
sh = wb.sheet_by_name(u'Sheet1')
first_column = sh.col_values(15)
start_urls = first_column
handle_httpstatus_list = [404]
def parse(self, response):
item = abcspiderItem()
item['url'] = response.url
问题是URL被重定向到其他URL(因此在响应URL中给出了其他内容)。我如何获得从Excel中获得的原始URL?
3条答案
按热度按时间62lalag41#
你可以在
response.request.meta['redirect_urls']
中找到你需要的东西。引用自文档:
在redirect_urls Request. meta关键字中可以找到请求(在重定向时)经过的url。
希望能有所帮助。
tzdcorbm2#
这给了我原始的'referer URL',也就是说,我的start_urls中的哪一个导致了与这个被抓取的请求对象相对应的URL:
ibps3vxo3#
如果有人还在寻找答案-
对于
Scrapy 2.6+
版本请使用-
response.request.headers.get('Referer', None).decode("utf-8")
它会给予你原始的URL(最初是字节字符串,因此字符串转换)
更多信息-Scrapy request response