抓取法国网站并获取 UnicodeEncodeError

Scraping french site and getting the UnicodeEncodeError

我正在抓取一个站点并从该站点上的链接获取信息,但是,许多链接包含 accents/french 个字符。我无法获取这些页面的链接,因此无法抓取它们。

这是从起始页获取 URL 的代码部分

def parse(self, response):

  subURLs = []
  
  partialURLs = response.css('.directory_name::attr(href)').extract()
  

  for i in partialURLs:

   yield response.follow('https://wheelsonline.ca/' + str(i), self.parse_dealers)

这是我在日志中遇到的错误

yield response.follow('https://wheelsonline.ca/' + str(i), self.parse_dealers)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 58: ordinal not in range(128)

感谢任何帮助!谢谢!

不要使用 str() 来转换该值。在这里阅读更多相关信息:UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

但是,有一个更好的方法来创建 URLs,就像使用 Scrapy 的内置 urljoin:

yield response.follow(response.urljoin(i), self.parse_dealers)

这将根据当前 URL 加上相对路径自动创建完整的 URL。