4
나는 매우 기본적인 치료 스파이더가 있습니다.이 스파이더는 파일에서 URL을 가져 와서 다운로드합니다. 유일한 문제는 일부 도메인이 동일한 도메인 내의 약간 수정 된 URL로 리디렉션 된 것입니다. 내가 내 콜백 함수를 response.meta을 사용하여 그들을 얻고 싶습니다, 그리고 그것은 정상적인 URL에서 작동하지만, URL을 리디렉션 콜백 전화를받지 않는 것 같습니다. 어떻게 해결할 수 있습니까? 여기 내 코드가 있습니다. 리디렉션 후 치료 콜백
from scrapy.contrib.spiders import CrawlSpider
from scrapy import log
from scrapy import Request
class DmozSpider(CrawlSpider):
name = "dmoz"
handle_httpstatus_list = [302]
allowed_domains = ["http://www.exmaple.net/"])
f = open("C:\\python27\\1a.csv",'r')
url = 'http://www.exmaple.net/Query?indx='
start_urls = [url+row for row in f.readlines()]
def parse(self, response):
print response.meta.get('redirect_urls', [response.url])
print response.status
print (response.headers.get('Location'))
는 또한 그 같은 시도했다 :
def parse(self, response):
return Request(response.url, meta={'dont_redirect': True, 'handle_httpstatus_list': [302]}, callback=self.parse_my_url)
def parse_my_url(self, response):
print response.status
print (response.headers.get('Location'))
을 그리고 그 중 하나가 작동하지 않습니다.
아니요, 리디렉션 된 URL을 가져올 필요가 있습니다.이 경우에는 유용합니다. – hellpanderrr
콜백 함수에서 가져올 수 있습니다. 링크 **에서 이동해야합니다. 그렇지 않으면 헤더 아래에서 URL을 가져올 수 있습니다. –