我一直在尝试使用lxml-lib从一些网站获取数据。和Python 3。但经过网络抓取过程,我得到了一些奇怪的字符,而不是土耳其字符。奇怪的人物如下。
- 土耳其Engelliler孢子园
- 技术人员
- 2019-2020年
但它们应该如下所示。
- 土耳其Engelliler Spor Yardım ve Eğitim Vakfı(TESYEV(Genel müdürlüğüü
- Tek ders sınavıhakkında duyuru
- 2019-2020年
我从不同的网站上得到了每一句话。我不知道如何将它们转换为土耳其语文本。
这是我的密码。
import cssselect
import requests
from lxml import html
def parse_html(url, selector):
page = requests.get(url)
tree = html.fromstring(page.content)
titles = tree.cssselect(selector)
for title in titles:
print(title.text_content().strip())
版本
- python=3.7.4
- lxml=4.5.2
- 请求=2.24.0
- cssselect=1.1.0
答案
import cssselect
import requests
from lxml import html
def parse_html(url, selector):
page = requests.get(url)
content = str(page.content, 'utf-8')
tree = html.fromstring(content)
titles = tree.cssselect(selector)
for title in titles:
print(title.text_content().strip())
为什么
unicode字符"ı"(U+0131(在UTF-8中编码为0xC4B1。2字节。
> echo -e 'u0131' | xxd -u
00000000: C4B1 0A ...
page.content
返回二进制响应内容。
0xC4B1变为0xC4(U+00C4'É'(和 0xB1并且U+00FC'ü'(UTF-8编码:0xC3BC(变为0xC3