我整天都在寻找一种方法来显示带有scrapy
的阿拉伯字母,但对我没有任何帮助!我正在抓取一个阿拉伯语网站,但我没有得到正确的阿拉伯语格式。
将结果保存到csv文件中时,这实际上是我得到的:
"بطل ليÙربول القديم" يرد على أنصار "الريدز"
这是我的功能:
def parse_details(self, response):
vars = ArticlesItem()
vars["title"] = response.css("h1.sna_content_heading::text").extract_first().strip()
vars["article_summary"] = response.css("span.article-summary").extract_first().strip()
vars["article_content"] = [i.strip() for i in response.css("div.article-body p::text").extract()]
vars["tags"] = [i.strip() for i in response.css("div.article-tags h2.tags::text").extract()]
yield vars
我尝试添加encode("utf-8")
,但是我仍然没有获得正确的格式
vars["title"] = ...extract_first().strip().encode("utf-8")
我得到这样的东西:
b'\xd8\xa8\xd8\xb1\xd9\x82\xd9\x85 "\xd9\x85\xd8\xb0\xd9\x87'
b'\xd9\x84".. \xd8\xa8\xd9\x86\xd8\xb2\xd9\x8a\xd9\x85\xd8\xa9 \xd9'
b'\x8a\xd8\xaa\xd9\x81\xd9\x88\xd9\x82 \xd8\xb9\xd9\x84\xd9\x89'
b' \xd9\x85\xd9\x8a\xd8\xb3\xd9\x8a \xd9\x88\xd8\xb1\xd9\x88'
b'\xd9\x86\xd8\xa7\xd9\x84\xd8\xaf\xd9\x88 \xd9\x88\xd8\xb5\xd9'
b'\x84\xd8\xa7\xd8\xad'
答案 0 :(得分:1)
因为@gallaecio
希望我写出我的问题的答案
这是我所做的:
1-打开一个空的Excel工作表
2-转到数据
3-选择“来自文本/ csv”
4-在文件原点下,我不得不将其从1252 Western European(Windows)更改为65001 Unicode(UTF-8),现在我可以阅读阿拉伯文本了!
5-加载!
答案 1 :(得分:1)
如果我获取您在问题中报告的数据,然后将其分配给变量,如下所示:
>>> a = (b'\xd8\xa8\xd8\xb1\xd9\x82\xd9\x85 "\xd9\x85\xd8\xb0\xd9\x87'
b'\xd9\x84".. \xd8\xa8\xd9\x86\xd8\xb2\xd9\x8a\xd9\x85\xd8\xa9 \xd9'
b'\x8a\xd8\xaa\xd9\x81\xd9\x88\xd9\x82 \xd8\xb9\xd9\x84\xd9\x89'
b' \xd9\x85\xd9\x8a\xd8\xb3\xd9\x8a \xd9\x88\xd8\xb1\xd9\x88'
b'\xd9\x86\xd8\xa7\xd9\x84\xd8\xaf\xd9\x88 \xd9\x88\xd8\xb5\xd9'
b'\x84\xd8\xa7\xd8\xad')
然后我基于(合理的)假设这些字节为UTF-8进行解码:
>>> a.decode()
'برقم "مذهل".. بنزيمة يتفوق على ميسي ورونالدو وصلاح'
在我看来,您正在恢复可能的期望,只是并没有达到您期望的方式。