我正在使用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
问题是网址被重定向到其他网址(因此在响应网址中提供了其他内容)。如何获得我从excel获得的原始网址?
答案 0 :(得分:17)
您可以在response.request.meta['redirect_urls']
中找到所需内容。
引自docs:
请求通过的URL(在重定向时)可以 可以在redirect_urls Request.meta键中找到。
希望有所帮助。
答案 1 :(得分:1)
这给了我原始的“referer URL”,即我的哪个 start_url 导致与此请求对象对应的 URL 被抓取:
req = response.request
req_headers = req.__dict__['headers']
referer_url = req_headers['Referer'].decode('utf-8')