我正在嘗試抓取非英語網站 ( https://arzdigital.com/ )。這是我的蜘蛛代碼。問題是雖然一開始我匯入了“urllib.parse”并在我寫的settings.py檔案中
FEED_EXPORT_ENCODING='utf-8'
蜘蛛沒有正確編碼(輸出是這樣的:“?3ù?ù??· ?±?° ù??2?§?± ?ˉù??§?±?? ?¨???a ú?ù???ù? ?ˉ?± ?1? ±?? ??ú? ?3?§?1?a?? ?1ù??a ú?ù? ?¨ù??ˉ??”)。即使使用 .encode() 函式也沒有用。
所以,這是我的蜘蛛代碼:
# -*- coding: utf-8 -*-
import scrapy
import logging
import urllib.parse
parts = urllib.parse.urlsplit(u'http://fa.wikipedia.org/wiki/?????_????')
parts = parts._replace(path=urllib.parse.quote(parts.path.encode('utf8')))
encoded_url = parts.geturl().encode('ascii')
'https://fa.wikipedia.org/wiki/صفحهٔ_اصلی'
class CriptolernSpider(scrapy.Spider):
name = 'criptolern'
allowed_domains = ['arzdigital.com']
start_urls=[f'https://arzdigital.com/latest-posts/page/{i}/'.format(i) for i in enter code hererange(1,353)]
def parse(self, response):
posts=response.xpath("//a[@class='arz-last-post arz-row']")
try:
for post in posts:
post_title=post.xpath(".//@title").get()
yield{
'post_title':post_title
}
except AttributeError:
logging.error("The element didn't exist")
誰能告訴我問題出在哪里?非常感謝!
uj5u.com熱心網友回復:
在回應頭中有一個字符集,否則默認為Windows-1252. 如果你找到一個字符集ISO-8859-1,用Windows-1252.
現在您有了正確的編碼來閱讀它。
最好以完整的 Unicode, 存盤所有內容UTF-8,因此每個腳本都是可能的。
您可能正在使用控制臺查看輸出(在 Windows 上很可能不是 UTF-8),然后您將看到多位元組序列作為兩個奇怪的字符。將它存盤在一個檔案中,然后使用 Notepad 或類似工具對其進行編輯,您可以在其中查看編碼并進行更改。如今,即使是 Windows 記事本有時也能識別 UTF-8。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377791.html
