2016-12-06 10 views
0

私はScrapyを使い始めました。現在の目標は、Webページのアーカイブツールを構築することです。Scrapyを使用したページのアーカイブ

これまでのところ、プロジェクトフォルダ内の.htmlファイルにページを保存するこのコードがあります。

import scrapy 

class TestSpider(scrapy.Spider): 
    name = "testbot" 
    allowed_domain = ["URL"] 
    start_urls = ["URL"] 

def parse(self, response): 
    filename = response.url.split("/")[-2] + '.html' 
    with open(filename, 'wb') as f: 
     f.write(response.body) 

上記のコードは機能しますが、すべてのページのアセットをダウンロードするにはどうすればよいですか。画像、CSS、JS

助けていただければ幸いです。ありがとう!

答えて

1

アセットをダウンロードする場合は、治療はFiles and Images pipelinesです。または、ファイル(画像、js、css)をダウンロードする独自のカスタムパイプラインを作成することもできます。次に、レスポンスからファイルのURLアドレスを抽出してパイプラインに渡すだけです。たとえば、次のようになります。

def parse(self, response): 

links = response.selector.xpath("/html/head/link[@rel='stylesheet']") 
for style_link in links: 
    yield { 
     'type' : 'stylesheet', 
     'url' : style_link.xpath('@href') 
    } 

images = response.selector.xpath("//img") 
for img in images: 
    yield { 
     'type' : 'image', 
     'url' : img.xpath('@src') 
    } 

java_scripts = response.selector.xpath("//script[@type='text/javascript']") 
for js in java_scripts: 
    yield { 
     'type' : 'js', 
     'url' : js.xpath('@src') 
    } 

これは基本的な例です。項目の形式は、使用するパイプラインによって異なる場合があります。

関連する問題