网络爬虫能区分编码吗?
我正在建一个爬虫来收集一些数据。然而,它看起来我正在搜索的网站没有正确编码;字符集是utf-8,但部分文本似乎是拉丁文1。
例如,您可以运行下面的代码。我将使用一个波兰名字和一个西班牙名字,两者都有特殊的字符作为例子。如果我复制粘贴并打印它们,utf-8中的IDE将正确地打印它们.然而,如果我从网站上刮来的话,禤浩焯的名字就不能正确地打印出来。但如果我用拉丁文-1对字符串进行编码,它会的。
所以我想网站上的一些文字不是utf-8,而是拉丁文。问题是如何告诉我的爬虫是否需要用拉丁文对文本进行编码?如果我试图编码所有的东西,像Pawel的返回错误之类的名字。我该试试吗?
# coding = utf-8
from bs4 import BeautifulSoup
import requests
user_agent = {'User-agent': 'Mozilla/5.0'}
def download_soup(url):
response = requests.get(url, headers=user_agent)
page = response.text
soup = BeautifulSoup(page, 'lxml')
return soup
print('utf-8 : Paweł Cieślik')
print('utf-8 : Adrián González')
pawel_soup = download_soup('https://www.procyclingstats.com/rider/pawel-cieslik').find('title').text
adrian_soup = download_soup('https://www.procyclingstats.com/rider/adrian-gonzalez').find('title').text
print('web original encoding : '+pawel_soup)
print('web original encoding : '+adrian_soup)
print('web latin encoding : '+adrian_soup.encode('latin-1').decode('utf-8'))返回
utf-8 : Paweł Cieślik
utf-8 : Adrián González
web original encoding : Paweł Cieślik
web original encoding : Adrián González
web latin encoding : Adrián González发布于 2018-07-12 10:50:50
对于尝试用拉丁语编码unicode时出现的错误,可以传递参数以忽略它:
pawel_soup.encode('latin-1', errors='ignore').decode('utf-8')https://stackoverflow.com/questions/51302839
复制相似问题