我正在抓取一个站点并从该站点上的链接获取信息,但是,许多链接包含重音符号/法语字符。我无法获取这些页面的链接,因此无法抓取它们。
这是从起始页获取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)
感谢您的帮助!谢谢!
答案 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。