如何获取utf8编码的html内容
how to get utf8 encoded html content
我有下一个代码
# __author__ = 'Vahagn'
# -*- coding: utf-8 -*-
import BeautifulSoup
import requests
req = requests.get(u"http://knowledge.allbest.ru/chemistry/3c0a65635a3ad68b5c53b88421306c27.html")
s2 = BeautifulSoup.BeautifulSoup(req.content).find('p',{'class':'text'}).text
print(s2+'\n')
我将 s2 压到控制台或写入文件的地方
Õèìè÷åñêèå ñâîéñòâà. Ìèíåðàëû. Ìåäíûå ñïëàâû. Ìàðêè ìåäíûõ ñïëàâîâ. Ìåäíî-öèíêîâûå ñïëàâû. Ëàòóíè. Îëîâÿííûå áðîíçû. Àëþìèíèåâûå áðîíçû. Êðåìíèñòûå áðîíçû. Áåðèëëèåâûå áðîíçû. Ìåäü â ïðîìûøëåííîñòè. Ìåäü â æèçíè ðàñòåíèé è æèâîòíûõ.
但需要
Химические свойства. Минералы. Медные сплавы. Марки медных сплавов. Медно-цинковые сплавы. Латуни. Оловянные бронзы. Алюминиевые бронзы. Кремнистые бронзы. Бериллиевые бронзы. Медь в промышленности. Медь в жизни растений и животных.
请帮忙,我该如何修复它,因为在这篇文章 (s2) 之后写到 mysql。谢谢你。
查看 HTML 和响应 headers,Web 服务器不会向您发送数据编码。这意味着 Python 必须进行猜测。我认为它将使用您的默认编码(无论您的 OS 使用什么)。
尝试使用不同的编码将 req.content
转换为 unicode
,直到找到能够产生正确输出的编码:
content = unicode(req.content, encoding)
尝试使用 utf-8
和 iso-latin-1
作为编码或俄罗斯使用的一些常用编码。
尝试在打印之前对其进行编码。像这样:
import BeautifulSoup
import requests
req = requests.get(u"http://knowledge.allbest.ru/chemistry/3c0a65635a3ad68b5c53b88421306c27.html")
s2 = BeautifulSoup.BeautifulSoup(req.content).find('p',{'class':'text'}).text
s2 = s2.encode('utf-8')
print(s2+'\n')
您可能需要解码:
s2 = BeautifulSoup(req.content.decode("windows-1251")).find('p',{'class':'text'}).text
In [72]: s2 = BeautifulSoup(req.content).find('p',{'class':'text'}).text
In [73]: s2
Out[73]: 'Õèìè÷åñêèå ñâîéñòâà. Ìèíåðàëû. Ìåäíûå ñïëàâû. Ìàðêè ìåäíûõ ñïëàâîâ. Ìåäíî-öèíêîâûå ñïëàâû. Ëàòóíè. Îëîâÿííûå áðîíçû. Àëþìèíèåâûå áðîíçû. Êðåìíèñòûå áðîíçû. Áåðèëëèåâûå áðîíçû. Ìåäü â ïðîìûøëåííîñòè. Ìåäü â æèçíè ðàñòåíèé è æèâîòíûõ.'
In [74]: s2 = BeautifulSoup(req.content.decode("windows-1251")).find('p',{'class':'text'}).text
In [75]: s2
Out[75]: 'Химические свойства. Минералы. Медные сплавы. Марки медных сплавов. Медно-цинковые сплавы. Латуни. Оловянные бронзы. Алюминиевые бронзы. Кремнистые бронзы. Бериллиевые бронзы. Медь в промышленности. Медь в жизни растений и животных.'
我有下一个代码
# __author__ = 'Vahagn'
# -*- coding: utf-8 -*-
import BeautifulSoup
import requests
req = requests.get(u"http://knowledge.allbest.ru/chemistry/3c0a65635a3ad68b5c53b88421306c27.html")
s2 = BeautifulSoup.BeautifulSoup(req.content).find('p',{'class':'text'}).text
print(s2+'\n')
我将 s2 压到控制台或写入文件的地方
Õèìè÷åñêèå ñâîéñòâà. Ìèíåðàëû. Ìåäíûå ñïëàâû. Ìàðêè ìåäíûõ ñïëàâîâ. Ìåäíî-öèíêîâûå ñïëàâû. Ëàòóíè. Îëîâÿííûå áðîíçû. Àëþìèíèåâûå áðîíçû. Êðåìíèñòûå áðîíçû. Áåðèëëèåâûå áðîíçû. Ìåäü â ïðîìûøëåííîñòè. Ìåäü â æèçíè ðàñòåíèé è æèâîòíûõ.
但需要
Химические свойства. Минералы. Медные сплавы. Марки медных сплавов. Медно-цинковые сплавы. Латуни. Оловянные бронзы. Алюминиевые бронзы. Кремнистые бронзы. Бериллиевые бронзы. Медь в промышленности. Медь в жизни растений и животных.
请帮忙,我该如何修复它,因为在这篇文章 (s2) 之后写到 mysql。谢谢你。
查看 HTML 和响应 headers,Web 服务器不会向您发送数据编码。这意味着 Python 必须进行猜测。我认为它将使用您的默认编码(无论您的 OS 使用什么)。
尝试使用不同的编码将 req.content
转换为 unicode
,直到找到能够产生正确输出的编码:
content = unicode(req.content, encoding)
尝试使用 utf-8
和 iso-latin-1
作为编码或俄罗斯使用的一些常用编码。
尝试在打印之前对其进行编码。像这样:
import BeautifulSoup
import requests
req = requests.get(u"http://knowledge.allbest.ru/chemistry/3c0a65635a3ad68b5c53b88421306c27.html")
s2 = BeautifulSoup.BeautifulSoup(req.content).find('p',{'class':'text'}).text
s2 = s2.encode('utf-8')
print(s2+'\n')
您可能需要解码:
s2 = BeautifulSoup(req.content.decode("windows-1251")).find('p',{'class':'text'}).text
In [72]: s2 = BeautifulSoup(req.content).find('p',{'class':'text'}).text
In [73]: s2
Out[73]: 'Õèìè÷åñêèå ñâîéñòâà. Ìèíåðàëû. Ìåäíûå ñïëàâû. Ìàðêè ìåäíûõ ñïëàâîâ. Ìåäíî-öèíêîâûå ñïëàâû. Ëàòóíè. Îëîâÿííûå áðîíçû. Àëþìèíèåâûå áðîíçû. Êðåìíèñòûå áðîíçû. Áåðèëëèåâûå áðîíçû. Ìåäü â ïðîìûøëåííîñòè. Ìåäü â æèçíè ðàñòåíèé è æèâîòíûõ.'
In [74]: s2 = BeautifulSoup(req.content.decode("windows-1251")).find('p',{'class':'text'}).text
In [75]: s2
Out[75]: 'Химические свойства. Минералы. Медные сплавы. Марки медных сплавов. Медно-цинковые сплавы. Латуни. Оловянные бронзы. Алюминиевые бронзы. Кремнистые бронзы. Бериллиевые бронзы. Медь в промышленности. Медь в жизни растений и животных.'