たとえば、私はサイト"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
htmlコードで構成されるwww.example.com
ファイルをスクレイプすることです。
Start_urlsでそのexample.htmlファイルを割り当てる方法について誰かが私に提案できますか?
前もって感謝します
次の形式のURLを使用して、ローカルファイルをクロールできます。
file:///path/to/file.html
HTTPCacheMiddlewareを使用できます。これにより、キャッシュからスパイダーを実行できるようになります。 HTTPCacheMiddleware設定のドキュメントは ここ にあります。
基本的に、settings.pyに次の設定を追加すると機能します。
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0 # Set to 0 to never expire
ただし、これには、キャッシュにデータを入力するためにWebから最初のスパイダーを実行する必要があります。
スクレイプでは、以下を使用してローカルファイルをスクレイプできます。
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'
scrapy Shell "file:E:\folder\to\your\script\Scrapy\teste1\teste1.html"
これは今日のWindows10で機能します。////なしでフルパスを設定する必要があります。