У меня была такая же проблема с этим символом →
вставлен на некоторые ссылки. Я нашел this related commit на GitHub и чем используемый this advice записать файл link_extractors.py
с:
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,
),
)
Любой пример поможет много! –