web-dev-qa-db-ja.com

ローカルシステムに保存されたhtmlでファイルをスクレイピングする

たとえば、私はサイト"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.htmlhtmlコードで構成されるwww.example.comファイルをスクレイプすることです。

Start_urlsでそのexample.htmlファイルを割り当てる方法について誰かが私に提案できますか?

前もって感謝します

次の形式のURLを使用して、ローカルファイルをクロールできます。

 file:///path/to/file.html
25
iodbh

HTTPCacheMiddlewareを使用できます。これにより、キャッシュからスパイダーを実行できるようになります。 HTTPCacheMiddleware設定のドキュメントは ここ にあります。

基本的に、settings.pyに次の設定を追加すると機能します。

HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0 # Set to 0 to never expire

ただし、これには、キャッシュにデータを入力するためにWebから最初のスパイダーを実行する必要があります。

10
Sjaak Trekhaak

スクレイプでは、以下を使用してローカルファイルをスクレイプできます。

class ExampleSpider(BaseSpider):
   name = "example"
   start_urls = ["file:///path_of_directory/example.html"]

   def parse(self, response):
       print response
       hxs = HtmlXPathSelector(response)

スクレイプシェルを使用して確認することをお勧めします 'file:///path_of_directory/example.html'

3
Gautam Kumar
scrapy Shell "file:E:\folder\to\your\script\Scrapy\teste1\teste1.html"

これは今日のWindows10で機能します。////なしでフルパスを設定する必要があります。

1
Rhuan Barros