在python中使用lxml进行网络抓取后,我得到了奇怪的字符,而不是土耳其字符



我一直在尝试使用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

最新更新