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

I get strange characters instead of turkish characters after web scraping using lxml in python

我一直在尝试使用 lxml 库从一些网站获取数据。和 Python3。但是在网络抓取过程之后,我得到了一些奇怪的字符而不是土耳其字符。奇怪的字符如下所示。

但它们应该如下所示。

我从不同的网站上得到了每句话。我不知道如何将它们转换为土耳其语文本。

这是我的代码。

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())

版本

回答

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.contentreturns一个Binary Response Content.

0xC4B1 变为 0xC4 (U+00C4 'Ä') 和 0xB1 (U +00B1 '±')

U+00FC 'ü'(UTF-8编码:0xC3BC)变为0xC3 (U+00C3 'Ã') 和 0xBC (U+00BC '¼')