在 python 中使用 lxml 进行网页抓取后,我得到了奇怪的字符而不是土耳其字符
I get strange characters instead of turkish characters after web scraping using lxml in python
我一直在尝试使用 lxml 库从一些网站获取数据。和 Python3。但是在网络抓取过程之后,我得到了一些奇怪的字符而不是土耳其字符。奇怪的字符如下所示。
- 土耳其残疾人体育援助和教育总局 (TESYEV)
- 关于单科考试的公告
- 2019-2020 学年需要提前完成
但它们应该如下所示。
- 土耳其残疾人体育援助和教育基金会 (TESYEV) 总局
- 关于单科考试的公告
- 我们的学生将在 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
returns一个Binary Response Content.
0xC4B1 变为 0xC4 (U+00C4 'Ä') 和 0xB1 (U +00B1 '±')
而U+00FC 'ü'(UTF-8编码:0xC3BC)变为0xC3 (U+00C3 'Ã') 和 0xBC (U+00BC '¼')
我一直在尝试使用 lxml 库从一些网站获取数据。和 Python3。但是在网络抓取过程之后,我得到了一些奇怪的字符而不是土耳其字符。奇怪的字符如下所示。
- 土耳其残疾人体育援助和教育总局 (TESYEV)
- 关于单科考试的公告
- 2019-2020 学年需要提前完成
但它们应该如下所示。
- 土耳其残疾人体育援助和教育基金会 (TESYEV) 总局
- 关于单科考试的公告
- 我们的学生将在 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
returns一个Binary Response Content.
0xC4B1 变为 0xC4 (U+00C4 'Ä') 和 0xB1 (U +00B1 '±')
而U+00FC 'ü'(UTF-8编码:0xC3BC)变为0xC3 (U+00C3 'Ã') 和 0xBC (U+00BC '¼')