搜寻法语网站并获取UnicodeEncodeError

时间:2019-02-22 22:57:46

标签: unicode scrapy special-characters scrapy-spider

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

这是从起始页获取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)

感谢您的帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

请勿使用str()来转换该值。在此处详细了解:UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

但是,有一种更好的方法可以使用Scrapy的内置urljoin创建类似URL的网址:

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

这将基于当前URL加上相对路径自动创建完整URL。