Скрап с помощью скрапа с использованием сохраненных HTML-страниц - PullRequest
0 голосов
/ 09 ноября 2018

Я ищу способ использовать скрап с HTML-страницами, которые я сохранил на своем компьютере. Насколько я знаю, я получил ошибку:

requests.exceptions.InvalidSchema: No connection adapters were found for 'file:///home/stage/Guillaume/scraper_test/mypage/details.html'

SPIDER_START_URLS = ["file: ///home/stage/Guillaume/scraper_test/mypage/details.html"]

1 Ответ

0 голосов
/ 11 ноября 2018

Я имел большой успех с использованием request_fingerprint для внедрения существующих файлов HTML в HTTPCACHE_DIR (что почти всегда .scrapy/httpcache/${spider_name}). Затем, включив вышеупомянутое промежуточное ПО для кэширования http , которое по умолчанию использует файловое хранилище, и «фиктивную политику», которая считает файл на диске авторитетным и не будет выполнять сетевой запрос, если обнаружит URL в кеше.

Я ожидаю, что сценарий будет выглядеть примерно так (это всего лишь общая идея, и даже не гарантированно будет работать):

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...