【发布时间】:2021-12-04 13:22:36
【问题描述】:
我正在尝试抓取一个非英语网站 (https://arzdigital.com/)。这是我的蜘蛛代码。问题是虽然一开始我导入“urllib.parse”并在我写的settings.py文件中
FEED_EXPORT_ENCODING='utf-8'
蜘蛛没有正确编码(输出如下:“سÙ,وط Û±Û° هزار دلاری بیت کوین د ر عرض یک ساعت؛ علت Ú†Ù‡ بود؟")。即使使用 .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/%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C'
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")
谁能告诉我问题出在哪里?非常感谢!
【问题讨论】:
标签: web-scraping scrapy web-crawler