我正在工作的一个网站经常在网址中使用—
,Scrapy在处理之前将其转换为—
;我试图通过在默认的“下载中间件”中添加几行来将其修改回—
,它确实可以正常打印,但Scrapy再次将其转换回了,最终结果为404。
'DOWNLOADER_MIDDLEWARES' : {
'something.middlewares.MyDownloaderMiddleware': 540
}
middlewares.py
from urllib.parse import unquote
from html import escape, unescape
class MyDownloaderMiddleware(object):
def process_request(self, request, spider):
new_url = unescape(unquote(request.url))
print (new_url)
request = request.replace(url=new_url)
return None
我在中间件中尝试使用return request
而不是return none
,但是它似乎也不起作用。
解决方案:
我已经在蜘蛛代码中放置了两个.replace("—", "—")
,尽管我的第一种方法是通过中间件来完成,但现在可以正常工作了。