关于JSPageMiddleware的问题
来源:9-5 其余动态网页获取技术介绍-chrome无界面运行、scrapy-splash、selenium-grid, splinter
慕盖茨7348004
2019-02-27
老师,您在8-4 小节 selenium 集成到scrapy中,用jobbole做测试,我发现图片无法被下载,禁用了这个中间件又恢复正常。这是为什么呢?下面是报错信息:
2019-02-27 00:44:52 [scrapy.pipelines.files] ERROR: File (unknown-error): Error processing file from <GET http://wx3.sinaimg.cn/mw690/7cc829d3ly1fyvkjyngtoj218g0tmdlf.jpg> referred in
1回答
-
慕盖茨7348004
提问者
2019-02-27
老师,我不知道为什么图片下载不了,但这个问题我初步解决了,就在jspagemiddle中return HtmlResponse前加了个 if 条件,可是为什么它无法请求图片url呢?还有更通用的解决办法吗?
def process_request(self, request, spider):
if spider.name == "jobbole":
spider.browser.get(request.url)##下面是条件,如果是图片url,那么还是需要交给下载器下载,不直接返回response
image_format = [".jpg", ".jpeg", ".png"]
if all(x in request.url for x in image_format):
# 已经通过 chrome 获取页面,直接返回 response,不用交给下载器重复下载了
return HtmlResponse(url=spider.browser.current_url, body=spider.browser.page_source, encoding="utf-8", request=request)052019-03-07
相似问题
回答 2
回答 1