使用保存的html页面使用scrapy进行刮取
我正在寻找一种方法,将scrapy与我保存在计算机上的html页面一起使用。就我而言,我犯了一个错误:使用保存的html页面使用scrapy进行刮取,html,web-scraping,scrapy,local,Html,Web Scraping,Scrapy,Local,我正在寻找一种方法,将scrapy与我保存在计算机上的html页面一起使用。就我而言,我犯了一个错误: requests.exceptions.InvalidSchema: No connection adapters were found for 'file:///home/stage/Guillaume/scraper_test/mypage/details.html' 蜘蛛_开始_URL=[”file:///home/stage/Guillaume/scraper_test/mypage
requests.exceptions.InvalidSchema: No connection adapters were found for 'file:///home/stage/Guillaume/scraper_test/mypage/details.html'
蜘蛛_开始_URL=[”file:///home/stage/Guillaume/scraper_test/mypage/details.html“]我使用将现有HTML文件注入(几乎总是
.scrapy/httpcache/${spider_name}
)获得了巨大成功。然后,打开前面提到的默认基于文件的缓存存储,以及“虚拟策略”,该策略认为磁盘上的文件具有权威性,并且如果在缓存中找到URL,则不会发出网络请求
我希望脚本会是这样的(这只是一般的想法,甚至不能保证运行):
1.除非我大错特错,否则Scrapy支持
文件:
方案已经很长时间了。2.根据您共享的日志,它看起来像是由著名的HTTP客户端库请求生成的,而不是Scrapy。现在我真的不知道,因为我是Scrapy的新手,所以我不会在任何时候使用静态服务器。对不起,我没有说清楚。我认为在其他人尝试进一步挖掘和帮助之前,您可能需要提供进一步的信息(更多的日志行?一些相关代码?等等)。所有日志:延迟中未处理的错误:2018-11-09 13:05:25[twisted]严重:回溯(最后一次调用):文件“/home/stage/miniconda3/envs/scrapy_env/lib/python3.6/site packages/twisted/internet/defer.py”,第1386行,在inlineCallbacks result=g.send(result)文件中“/home/stage/miniconda3/envs/scrapy_env/lib/python3.6/site packages/scrapy/crawler.py”,第82行,在爬网产量self.engine.open_spider(self.spider,启动请求)requests.exceptions.InvalidSchema:未找到“”的连接适配器file:///home/stage/Guillaume/scraper_test/mypage/details.html'
import sys
from scrapy.extensions.httpcache import FilesystemCacheStorage
from scrapy.http import Request, HtmlResponse
from scrapy.settings import Settings
# this value is the actual URL from which the on-disk file was saved
# not the "file://" version
url = sys.argv[1]
html_filename = sys.argv[2]
with open(html_filename) as fh:
html_bytes = fh.read()
req = Request(url=url)
resp = HtmlResponse(url=req.url, body=html_bytes, encoding='utf-8', request=req)
settings = Settings()
cache = FilesystemCacheStorage(settings)
spider = None # fill in your Spider class here
cache.store_response(spider, req, resp)