BeautifulSoup 返回乱七八糟的阿拉伯语字符

BeautifulSoup returning messed-up arabic characters

我正在使用 BeautiifulSoup 抓取一个阿拉伯语网站,但返回的阿拉伯语字符是倒置的和单独的字符(将其粘贴到此处正确编码,因此您必须相信我:)。

网站字符集正在使用 UTF-8

<meta charset=UTF-8>

我是这样解析的:

url = 'https://new.kooora4live.net/matches-today-1/'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'lxml', from_encoding='utf-8')  

将请求的 HTML 写入具有 utf-8 编码的文件会在文件中正确格式化它,因此它似乎是 BeautifulSoup.

的问题

知道我做错了什么或如何解决吗?

..... 更新: 使用 utf-8-sig 编码也不起作用。

您需要设置页面编码以匹配其外观编码。

试试这个:

import requests
from bs4 import BeautifulSoup

page = requests.get('https://new.kooora4live.net/matches-today-1/')
page.encoding = page.apparent_encoding
soup = BeautifulSoup(page.content, 'lxml').select("a")
print("\n".join(a.getText(strip=True) for a in soup))

这将打印出:

الأخبار
أهم المباريات
جداول
ترتيب الفرق
ترتيب الهدافين



مباريات الأمس
مباريات اليوم
مباريات الغد

جمهورية التشيك7:00 PM0-0لم تبدأ بعدالدنماركبي ان ماكس 1احمد البلوشييورو 2020
اوكرانيا10:00 PM0-0لم تبدأ بعدإنجلترابي ان ماكس 1حسن العيدروسيورو 2020

and more ...