scrapyサプリメント - 非同期爬虫類

クモ

説明:このプロジェクトは、クローラPYファイルを作成することです

クロールタスクとどのページから構造化データを抽出することを実行する方法を含む。1、クラス一連のクモ(URL又はURLの定義されたセットをクロールする)組成物。

あなたは、特定のURLまたはURLのセットのための行動をクロールし、解析するページをカスタマイズどこ言い換えれば2、クモがあります

 

蜘蛛の意志サイクルは、いくつかのことを次の

1、最初のクロールが最初にURLを要求し、識別コールバック関数を生成するための
最初の要求を(start_requestsに定義されている)デフォルトリストstart_urlsリクエスト要求が発生したから取得したURLアドレス内のメソッドは、デフォルトのコールバック関数は、解析され方法。コールバック関数が自動的にダウンロードが完了し、リターン応答であるときにトリガーされる

2、コールバック関数、解析し、応答を返す値は
:値は4種類のかもしれ返され
        、解析されたデータディクショナリ含ま
        Itemオブジェクト
        (新しい要求がコールバックを指定する必要が新しいRequestオブジェクトを)
        または反復可能オブジェクト(アイテムまたは要求を含む)

3、コールバック関数内のコンテンツを解析するページ
は通常Scrapy自身のセレクタを使用しますが、明らかにあなたはまた、あなたが漢で好きなBeutifulsoup、lxmlのか、他の使用を使用することができます。

4最後に、アイテムオブジェクトは、データベースに永続化され返さ 
HTTPS://docs.scrapy.org/en/latest/topics/item-pipeline.htmlデータベースに項目パイプラインコンポーネントによってトピック品目-pipeline) 
または別のファイルにエクスポート(フィードによって輸出:HTTPS://docs.scrapy.org/en/latest/topics/feed-exports.html トピック・フィードの輸出)

 

スパイダーは、5種の合計します:

1、#scrapy.spiders.Spider scrapy.Spider等同于scrapy.spiders.Spider 2、scrapy.spiders.CrawlSpider 3、scrapy.spiders.XMLFeedSpider 4、scrapy.spiders.CSVFeedSpider 5、scrapy.spiders。 SitemapSpider

 

インポートの使用

- * -コーディング:UTF-8 - * - 。
輸入Scrapy
 から scrapy.spiders  インポートスパイダー、CrawlSpider、XMLFeedSpider、CSVFeedSpider、SitemapSpiderの

クラス AmazonSpider(scrapy.Spider): 継承ベースクラスは、くもの提供するカスタムクラス 
    名を= " アマゾン' 
    allowed_domains = [ ' www.amazon.cn ' ] 
    start_urls = [ ' http://www.amazon.cn/ " ] 
    

` `` 
DEF パース(セルフ、応答):
     パス
`` `

MongoDBの中に格納されたデータ

pipelinsは、プロセスを使用します。

  settings.pyは、取得すべきデータで定義されたモデル項目、データベースに接続pipelins.py、コンテンツデータを書き込むcnblogs.pyクロールを配置しました。

1、項目で記述されたクラスは、モデルのようなフィールドが存在し、ジャンゴ

輸入scrapy 

クラスMyscrapyItem(scrapy.Item): #
:#     のようにここにあなたの項目のフィールドを定義
#の     #名= scrapy.Field()      パス
クラスArticleItem(scrapy.Item):
    article_name = scrapy.Field()
    article_url = scrapy.Field()
    auther_name = scrapy.Field()
    COMMIT_COUNT = scrapy.Field()

2、settings.py、パイプライン設定、優先度に配置されています。

 

 

3、pipelines.py

メソッドの束を書いて、データベースへの接続

-ArticleMongodbPipeline 
                 - INIT
                  - from_crawler
                 - open_spider
                  - close_spider
                 - process_item
                     - 対応する書き込みメモリ
                    リターン何かが違う、アイテムならば、次のpipelinsを取得し続けることができ、戻りなしの場合、次のではないのGET 
             -ArticleFilePipeline

 

コードの実装:

- * -コーディング:UTF-8 - * - 

から pymongo インポートMongoClientの
 クラスArticleMongodbPipeline(オブジェクト):
     DEFのprocess_item(セルフ、アイテム、スパイダー): 

        クライアントMongoClient =( 'のMongoDB:// localhostを:27017 /') 
        接続
        クライアント= MongoClient(localhostの、27017 作成するために呼び出されていない場合は、記事データベースを作成し、そうであれば、使用して呼び出さ 
        デシベルを=クライアント[ 記事]
         印刷(デシベル)
        あなたがarticleinfoを使用している場合は、そうでない場合は、このテーブルを作成します 
        DB = article_info [ ' articleinfo ' ]

        article_info.insert(辞書(アイテム))
        #1 article_info.save({ 'article_name':項目[ 'article_name']、 'aritcle_url':項目[ 'article_url']}) 
        retrunなし、次の項目は、に失敗しないであろう場合、なしに取られ


たクラスArticleFilePipeline(オブジェクト):
    DEF __init __(自己、ホスト、ポート):
    DEF  __init__ (セルフ):
        self.mongo_conn = MongoClient(ホスト、ポート)
        パス

    このクラスがfrom_crawlerを持っている場合は、最初の実行from_crawler、AA = ArticleFilePipeline.from_crawler(クローラ)
    は直接ArticleFilePipelineがない場合= AA()は
    @classmethod
     DEF from_crawler(CLS、クローラ):
         印刷' 'MongoDBの構成情報の設定
        #の「設定ファイルからアウト」ホスト= 
        「設定ファイルから出て」ポート= 
        crawler.settings全体的なプロファイル
        を印刷asdfasdfasfdasfd 、crawler.settingsを[ ' AA ' ])
        リターンCLS(ホスト、ポート)
        リターンCLS()

    DEF )自己、スパイダー(open_spider:
        印刷( '----'、spider.custom_settings [ 'AA']) 
        self.f =オープン(' article.txt '' A ' 


    DEF close_spider(セルフ、スパイダー): 
        self.f.近い() 
        印刷' クローズクモ' 


    DEF process_item(自己、アイテム、クモ):
         合格

重複排除 

爬虫類は、クロールするたびに重複除外ルールは、複数の爬虫類で共有されなければならない、他の人が登るする必要はありませんが、実装は次のとおりです。

 

 

 

 

 

 

 

 

 

カスタム重複排除ソリューション

ミドルウェアを使用してダウンロード

 

爬虫類ミドルウェア

 

信号および構成情報

 

ブルームフィルタ

分散クロール-scrapy、Redisの

 

 

 

ソースコード解析

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

実施内部ソースをカプセル化する方法

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/Gaimo/p/11960610.html