从另一个资源下载HTML,而不使用scrapy



我在scrapy项目的spiders目录中创建了以下文件。我面临的问题是middlewares.py内部的函数,即process_requestprocess_response没有被调用。这可能是什么原因?

import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'https://liv.ai/'
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
print(response.url,"...", response.status)
page = response.url.split("/")[-2]
filename = 'quotes-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)

我想使用另一个过程从网页下载HTML,而不是杂乱无章。这就是为什么,我想在中间件中侦听,并直接指向另一个可以下载HTML并发回响应的源。

Target网站使用js/ajax来创建您在浏览器中看到的美丽布局,而您的爬网程序则看到其他东西;对于常规网站来说,您的方法似乎很好,但对于这个特定的网站,如果不使用无头浏览器,您将永远无法获得所有的html代码-请尝试seleniumsplash以查看处理后的html。

我面临的问题是没有调用middlewares.py内部的函数,即process_request和process_reresponse。这可能是什么原因?

由于您没有明确提及它,您可能忘记启用中间件。在middlewares.py中定义它是不够的(或者说是必要的,中间件可以在许多不同的地方定义(。

最新更新