抓取法国网站并获取 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。
我正在抓取一个站点并从该站点上的链接获取信息,但是,许多链接包含 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。