Ответ 1
Вы можете сканировать локальный файл, используя URL-адрес следующей формы:
file:///127.0.0.1/path/to/file.html
Это не требует, чтобы на вашем компьютере был установлен http-сервер.
Например, у меня был сайт "www.example.com"
На самом деле я хочу очистить html этого сайта, сохранив его в локальной системе.
поэтому для тестирования я сохранил эту страницу на своем рабочем столе как example.html
Теперь я написал код паука для этого, как показано ниже
class ExampleSpider(BaseSpider):
name = "example"
start_urls = ["example.html"]
def parse(self, response):
print response
hxs = HtmlXPathSelector(response)
Но когда я запускаю вышеуказанный код, я получаю эту ошибку ниже
ValueError: Missing scheme in request url: example.html
Наконец, мое намерение - очистить файл example.html
, состоящий из www.example.com
html кода, сохраненного в моей локальной системе
Может ли кто-нибудь предложить мне, как назначить этот файл example.html в start_urls
Заранее спасибо
Вы можете сканировать локальный файл, используя URL-адрес следующей формы:
file:///127.0.0.1/path/to/file.html
Это не требует, чтобы на вашем компьютере был установлен http-сервер.
Вы можете использовать HTTPCacheMiddleware, что даст вам возможность запускать паутину из кеша. Документ для параметров HTTPCacheMiddleware находится здесь.
В принципе, добавление следующих параметров в ваш settings.py заставит его работать:
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0 # Set to 0 to never expire
Однако для этого требуется выполнить начальный прогон паука из Интернета для заполнения кеша.
В scrapy Вы можете очистить локальный файл, используя:
class ExampleSpider(BaseSpider):
name = "example"
start_urls = ["file:///path_of_directory/example.html"]
def parse(self, response):
print response
hxs = HtmlXPathSelector(response)
Я предлагаю вам проверить это с помощью scrapy shell 'file:///path_of_directory/example.html'
scrapy shell "file:E:\folder\to\your\script\Scrapy\teste1\teste1.html"
это работает для меня сегодня на Windows 10. Я должен поставить полный путь без ////.
Если вы просматриваете исходный код scrapy Request, например github. Вы можете понять, какой запрос отправки scrapy на сервер http и получить необходимую страницу в ответ от сервера. Ваша файловая система не является http-сервером. Для тестирования с помощью scrapy вы должны настроить http-сервер. И тогда вы можете назначить URL-адреса для лечения, например
http://127.0.0.1/example.html