Scrapy入門———Scrapy 1.6公式教程学習ノート
Scrapyがインストールされていれば、次のチュートリアルを開始できます.もしなかったら、私のブログ「Scrapyのインストール」を見てインストールしてから、戻って見てもいいですよ.
次に、登ります quotes.toscrape.comの有名人の名言は、このチュートリアルの素材として使われています.
チュートリアルには、次の5つのステップがあります.新しいScrapyプロジェクト を作成はspiderを書いてウェブページに登ってデータ を抽出しますコマンドラインを使用して這い出すデータ を出力する.リンクに従って再帰的に這い出す(各リンクを這い出す) . spiderパラメータ を使用
Scrapyプロジェクトの作成
Scrapyの使用を開始する前に、新しいScrapyプロジェクトを作成する必要があります.ディレクトリに入り、次のコマンドを入力して、Scrapyプロジェクトを新規作成します. name:Spiderの識別子.プロジェクト内でユニークでなければなりません.異なるSpiderに同じ名前を設定することはできません. start_requests():反復可能なリクエストを返す必要があります(リクエストリストを返すか、ジェネレータ関数を作成できます).これにより、爬虫類が爬虫類を開始します.後続のリクエストは、これらの初期リクエストから順次生成されます. parse():各リクエストがダウンロードした応答を処理するためにメソッドが呼び出されます.応答パラメータは、ページの内容を含むTextResponseインスタンスであり、それを処理するためのさらなる助けがあります.parse()メソッドは、通常、応答を解析し、クリップデータをdictsとして抽出し、それらからの新しいリクエスト(リクエスト)を追跡および作成するために新しいurlを探します.
spiderの実行方法
spiderを作業するには、プロジェクトのトップディレクトリに戻り、次のように実行します.
ヒント:なぜHTMLを解析していないのか知りたい場合は、少々お待ちください.すぐにお話しします.
続きを待つ
Scrapy 1.5公式文書を参照:https://docs.scrapy.org/en/latest/intro/tutorial.html#
次に、登ります quotes.toscrape.comの有名人の名言は、このチュートリアルの素材として使われています.
チュートリアルには、次の5つのステップがあります.
Scrapyプロジェクトの作成
Scrapyの使用を開始する前に、新しいScrapyプロジェクトを作成する必要があります.ディレクトリに入り、次のコマンドを入力して、Scrapyプロジェクトを新規作成します.
scrapy startproject tutorial
では、次のようなtutorialディレクトリが作成されます.tutorial/ scrapy.cfg # deploy configuration file tutorial/ # project's Python module, you'll import your code from here __init__.py items.py # project items definition file middlewares.py # project middlewares file pipelines.py # project pipelines file settings.py # project settings file spiders/ # a directory where you'll later put your spiders __init__.py
最初のSpider
Spidersは、Webサイトから情報を抽出するために定義するクラスです.
Spidersはscrapy.Spiderのサブクラスと初期化要求を定義し、ページ内でリンクを追跡する方法、ダウンロードしたページ内容を解析してデータを抽出する方法を選択する必要があります.
次のコードは私たちの初めてのSpiderコードです.保存ファイル名quotes_spider.pyは、tutorial/spidersディレクトリの下に新しいSpidersプロジェクトに保存されます.では、Spiderのサブクラスscrapy.Spiderがいくつかのプロパティとメソッドを定義していることがわかります.import scrapy class QuotesSpider(scrapy.Spider): name = "quotes" def start_requests(self): urls = [ 'http://quotes.toscrape.com/page/1/', 'http://quotes.toscrape.com/page/2/', ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): page = response.url.split("/")[-2] filename = 'quotes-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('Saved file %s' % filename)
spiderの実行方法
spiderを作業するには、プロジェクトのトップディレクトリに戻り、次のように実行します.
scrapy crawl quotes
このコマンドは、追加したばかりのnameをquotesとする爬虫類を実行するために使用され、いくつかのリクエストが送信されます.これと同様の出力が得られます.... (omitted for brevity)
2016-12-16 21:24:05 [scrapy.core.engine] INFO: Spider opened
2016-12-16 21:24:05 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-12-16 21:24:05 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-12-16 21:24:05 [scrapy.core.engine] DEBUG: Crawled (404) (referer: None)
2016-12-16 21:24:05 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None)
2016-12-16 21:24:05 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None)
2016-12-16 21:24:05 [quotes] DEBUG: Saved file quotes-1.html
2016-12-16 21:24:05 [quotes] DEBUG: Saved file quotes-2.html
2016-12-16 21:24:05 [scrapy.core.engine] INFO: Closing spider (finished)
...
現在のディレクトリのファイルを確認します.parseメソッドによって生成された2つの新しいファイル:quotes-1.htmlとquotes-2.htmlが作成されていることに注意してください.ヒント:なぜHTMLを解析していないのか知りたい場合は、少々お待ちください.すぐにお話しします.
続きを待つ
Scrapy 1.5公式文書を参照:https://docs.scrapy.org/en/latest/intro/tutorial.html#