沙哑的不显示阿拉伯字母

时间:2019-01-30 20:41:37

标签: python web-scraping scrapy

我整天都在寻找一种方法来显示带有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'

2 个答案:

答案 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()
'برقم "مذهل".. بنزيمة يتفوق على ميسي ورونالدو وصلاح'

在我看来,您正在恢复可能的期望,只是并没有达到您期望的方式。