scrapy 1.1新米ガイド(python 3)
5907 ワード
初めてscrapyに接触して、オフィシャル[tutorial]を記録します.http://doc.scrapy.org/en/1.1/intro/tutorial.html)公式ガイドブックでは、はい上がったサイトは、「tes.tootcrape.com」です.
ガイドは終了します.新規プロジェクト 登りたい内容を定義する 爬虫類を書いてウェブサイトを取りに行きます. コマンドラインを使って、這って取った内容を導出する .
配置
私は自分のvps(centos 7)に展開しています.Virtualnvを使って、pythonのバージョンは3.5.です.コンパイル環境に注意して必ず装填してください.centos 7についてpython 3.5をインストールして、virtualnvと必要なコンパイル環境を有効にします.ここを見てください.
のpackage libffiエラーが発生したら
新しいプロジェクトを作成します.
ディレクトリの下で''scrapy startproject tutoraial''を実行します.現在のディレクトリの下でtutorialというフォルダを作成します.このフォルダ構造は以下の通りです.
Itemsは、コンテンツをロードするためのコンテナです.Pythonの辞書と似ています.また、Item Loadersの使用に合わせて追加の機能を提供します.Itemはscrapy.Itemクラスを作成するだけで、scrapy.Fieldオブジェクトとして設定します.ORMを使うのに似ています.(ORMが大丈夫かどうかは分かりませんが、今は使えません.)
私達はquot.tootcrape.comの本文と作者を捕まえてtutorial/items.pyファイルを編集して、クラスを追加します.
ウェブページのコードを取得します
spidersは私達が定義したもので、必要な内容を登るための書類で、新しい爬虫類ファイルを作成します.scrapy.Spiderを継承して、以下の属性を定義します. name爬虫類の名称は、同じ項目に重複した名称のspiderがあってはいけません. start_url開始urlリストは、各urlがResonseオブジェクト に戻ります. parse()呼び出し時に各URLから転送されたResponseオブジェクトに着信し、キャプチャされたデータ(解析item)を解析してマッチングし、より多くのURLを追跡する.新しいチュートリアル/spiders/quot tespider.pyファイル
必要な内容を分析して取得するSrapy Selectors
ページコードを現地にダウンロードした後、データを分析し、Scrpyを抽出し、Selector類を提供してデータを取得する必要があります.詳細は紹介されたSelectorsによってサポートされます. xpath():selectorリストを返し、各項目は一つのxpathパラメータ表現の選択を表すノード を返します. css():selectorリストを返し、各項は一つのcssパラメータ表現の選択を表すノード を返します. extract():正規表現を用いて取り込まれた内容を返す文字列リスト re():正規表現を用いて取り込まれた内容を返す文字列リスト XPTath詳細はXXPS教程をご参照ください.
チュートリアルを修正します.spider.pyファイル
定義されたターゲットファイル(Item)を使用します.
後続の接続をよじ登ります.
前のコードは私達のストールを取るだけです.urlsで定義されている二つのページで、爬虫類はstart_からurlの中で登って取った内容の中で後続のurlリンクを探し当てます.
Feed exportsを使う
取得した情報を追加処理(例えばデータベースに保存)する必要がない場合、scrapy命令によりJsonなどのフォーマットのファイルを直接出力することができます.詳細はFeed exportsなどを参照して、jsonファイルとして出力されます.
新規プロジェクトを作成すると、パイプラインファイルのtutrial/pipeline.pyが自動的に生成されます.
締め括りをつける
っていうか、マニュアルはここで終わってしまいます.コマンドラインで実行することだけを述べました.scrapy.cfgファイルは?settings.pyファイルは?
はい、説明しただけです.新規プロジェクト 登りたい内容を定義する 爬虫類を書いてウェブサイトを取りに行きます. コマンドラインを使って、這って取った内容を導出する .
もっと多くの内容は後のドキュメントにあります.今日は先にここに記録してください.明日は引き続きscrapyを見ます.
本論文のリンクhttp://ludaming.com/posts/spider/scrapy-tutorial.html 私のブログ:ludaming.com
ガイドは終了します.
配置
私は自分のvps(centos 7)に展開しています.Virtualnvを使って、pythonのバージョンは3.5.です.コンパイル環境に注意して必ず装填してください.centos 7についてpython 3.5をインストールして、virtualnvと必要なコンパイル環境を有効にします.ここを見てください.
pip install scrapy
インストールが完了しましたのpackage libffiエラーが発生したら
yum install libffi-devel
scrapy初心者ガイド新しいプロジェクトを作成します.
ディレクトリの下で''scrapy startproject tutoraial''を実行します.現在のディレクトリの下でtutorialというフォルダを作成します.このフォルダ構造は以下の通りです.
tutorial/
scrapy.cfg # scrapy
tutorial/ # python ,
__init__.py
items.py # ( )
pipelines.py # ( )
settings.py #
spiders/ #
__init__.py
ターゲットファイルを定義する(Items)Itemsは、コンテンツをロードするためのコンテナです.Pythonの辞書と似ています.また、Item Loadersの使用に合わせて追加の機能を提供します.Itemはscrapy.Itemクラスを作成するだけで、scrapy.Fieldオブジェクトとして設定します.ORMを使うのに似ています.(ORMが大丈夫かどうかは分かりませんが、今は使えません.)
私達はquot.tootcrape.comの本文と作者を捕まえてtutorial/items.pyファイルを編集して、クラスを追加します.
import scrapy
class QuoteItem(scrapy.Item):
text = scrapy.Field()
author = scrapy.Field()
爬虫類ファイル(spidrs)ウェブページのコードを取得します
spidersは私達が定義したもので、必要な内容を登るための書類で、新しい爬虫類ファイルを作成します.scrapy.Spiderを継承して、以下の属性を定義します.
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
# ,
def parse(self, response):
filename = 'quotes-' + response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
実行後(この時はクラスだけを定義して、プロジェクトのルートディレクトリでscrapy crawl quot)を実行したいです.Scrpyは各urlのためにscrapy.Requestオブジェクトを作成して、各requestsを実行します.戻りのレスポンスオブジェクトをパラメータとしてパスする方法です.必要な内容を分析して取得するSrapy Selectors
ページコードを現地にダウンロードした後、データを分析し、Scrpyを抽出し、Selector類を提供してデータを取得する必要があります.詳細は紹介されたSelectorsによってサポートされます.
チュートリアルを修正します.spider.pyファイル
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
def parse(self, response):
for quote in response.xpath('//div[@class="quote"]'):
text = quote.xpath('span[@class="text"]/text()').extract_first()
author = quote.xpath('span/small/text()').extract_first()
print(u'{}: {}'.format(author, text))
parse():classごとにquotのdivを取って、divの中でtextとauthorの本文を遍歴します.extract_.first():selectorリストの第一項を返します.定義されたターゲットファイル(Item)を使用します.
import scrapy
from tutorial.items import QuoteItem
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
def parse(self, response):
for quote in response.xpath('//div[@class="quote"]'):
item = QuoteItem()
item['text'] = quote.xpath('span[@class="text"]/text()').extract_first()
item['author'] = quote.xpath('span/small/text()').extract_first()
yield item
yieldに関しては、ここを見てください.後続の接続をよじ登ります.
前のコードは私達のストールを取るだけです.urlsで定義されている二つのページで、爬虫類はstart_からurlの中で登って取った内容の中で後続のurlリンクを探し当てます.
import scrapy
from tutorial.items import QuoteItem
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
]
def parse(self, response):
#
for quote in response.xpath('//div[@class="quote"]'):
item = QuoteItem()
item['text'] = quote.xpath('span[@class="text"]/text()').extract_first()
item['author'] = quote.xpath('span/small/text()').extract_first()
yield item
next_page = response.xpath('//li[@class="next"]/a/@href').extract_first()
# , request request callback parse()
if next_page:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
這い上がった情報を記憶するFeed exportsを使う
取得した情報を追加処理(例えばデータベースに保存)する必要がない場合、scrapy命令によりJsonなどのフォーマットのファイルを直接出力することができます.詳細はFeed exportsなどを参照して、jsonファイルとして出力されます.
# items.json
scrapy crawl quotes -o items.json
パイプラインpipelineを使う新規プロジェクトを作成すると、パイプラインファイルのtutrial/pipeline.pyが自動的に生成されます.
締め括りをつける
っていうか、マニュアルはここで終わってしまいます.コマンドラインで実行することだけを述べました.scrapy.cfgファイルは?settings.pyファイルは?
はい、説明しただけです.
もっと多くの内容は後のドキュメントにあります.今日は先にここに記録してください.明日は引き続きscrapyを見ます.
本論文のリンクhttp://ludaming.com/posts/spider/scrapy-tutorial.html 私のブログ:ludaming.com