2
링크 인코딩Scrapy 파이썬 : 유니 코드 링크 오류
사이트 scrapy가 & AMD가 포함 된 링크를 추출하고 excption을 던졌습니다 근근이 살아가고 : 이 링크를 인스턴스화하지 마십시오 유니 코드 URL을 개체. utf-8 인코딩 (잘못 될 수 있음)을 가정하면이 오류를 어떻게 해결할 수 있습니까?
링크 인코딩Scrapy 파이썬 : 유니 코드 링크 오류
사이트 scrapy가 & AMD가 포함 된 링크를 추출하고 excption을 던졌습니다 근근이 살아가고 : 이 링크를 인스턴스화하지 마십시오 유니 코드 URL을 개체. utf-8 인코딩 (잘못 될 수 있음)을 가정하면이 오류를 어떻게 해결할 수 있습니까?
나는이 문자로 같은 문제가 발생했습니다 →
일부 링크에 삽입했습니다. 나는 GitHub의에 this related commit을 발견하고있는 파일 link_extractors.py
을 작성하는 this advice을 사용하는 것보다 :
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.utils.response import get_base_url
class CustomLinkExtractor(SgmlLinkExtractor):
"""Need this to fix the encoding error."""
def extract_links(self, response):
base_url = None
if self.restrict_xpaths:
hxs = HtmlXPathSelector(response)
base_url = get_base_url(response)
body = u''.join(f for x in self.restrict_xpaths
for f in hxs.select(x).extract())
try:
body = body.encode(response.encoding)
except UnicodeEncodeError:
body = body.encode('utf-8')
else:
body = response.body
links = self._extract_links(body, response.url, response.encoding, base_url)
links = self._process_links(links)
return links
은 이후 내
spiders.py
에서 그것을 사용 :
rules = (
Rule(CustomLinkExtractor(allow=('/gp/offer-listing*',),
restrict_xpaths=("//li[contains(@class,'a-last')]/a",)),
callback='parse_start_url', follow=True,
),
)
모든 예는 많은 도움이 될 것이다! –