簡単な例scrapy

昨日の研究室の先輩前日はまさにscrapyワークフローの理解を深めるために、この機会を活用し、また、どのくらいの知識scrapyを見て前に、簡単なscrapyがうまくいく書くように求めたが、非常に理解することはありません。期間の終わりに近づいたよう、たくさんの宿題は、(実際に、または彼らはあまりにも..............メインディッシュ、喜喜ある)行うので、私はそれを模倣する簡単な例を探すことにしました。

クロールテンセント募集のネットワーク例のショー検索(https://www.cnblogs.com/xinyangsdut/p/7628770.html)も解決できない、チューニングをしようと、Qiaowan手の後に実行されません。クロールのブログパーク(見に行きましたhttps://www.jianshu.com/p/78f0bc64feb8)、この例では、最初のページだけをクロールし、若干変更の下で、任意の数のページをクロールすることができます。そして、時刻を変更、またトラブルのビットに遭遇しました。(彼らは無知の涙を流し、あまりにも料理している事実で.......または)scrapyの理解はまだ十分ではありませんが、最高のは、最終的には正常に完了しています。次に、この例では簡単な解剖学。

  1. 最初は定義されたフィールドをクロール、コンテンツのクロールに基づいて、アイテムのファイルを作成することです。コードは以下の通りであります:
    インポートScrapyの
    
    
    クラスCnblogItem(scrapy.Item):
        あなたのような項目のためにここに壁紙をフィールドを定義:
        名= scrapy.Field() 
        タイトル= scrapy.Field()#定義クロールタイトル
        リンク = scrapy.Field()#定義接続クロール
  2. 次のようにクモのファイル(これはキーです)、ここでは名前のcnblog_spider、コードを書くことです。
    - * -コーディング:UTF-8 - - * 
    輸入scrapy
     から cnblog.itemsはインポートCnblogItem 
    
    
    クラス:CnblogSpiderSpider(scrapy.Spider) = " cnblog_spider " 
        allowed_domains = [ " cnblogs.com " ] 
        URL = " https://でWWWを.cnblogs.com / sitehome / P / ' 
        オフセット = 1 
        start_urls = [URL + STR(オフセット)] 
    
        DEF (自己、応答)を解析:
    
    
            商品 = CnblogItem()
    
            項目[ ' タイトル' ] Response.xpath =(' // A [クラス@ = "titlelnk"] /テキスト()').extract()       使用したXPath検索 
            項目[ ' リンク' ] response.xpath =(' // A [@ =クラス"titlelnk"] / HREF @ ' ).extract()
    
            収量商品
    
            プリント" {0}完了ページクロール" .format(self.offset))
             IF self.offset <10:        少数にクロールページ 
                self.offset + = 1 
            URL2 = self.url + STR(self.offset)    スプライシングURLの
            印刷(URL2)
             利回り scrapy.Request(URL = URL2、コールバック= self.parse)

     コードの内容のこの部分では、理解することが難しいものではありませんが、あなたは徹底的に全体の動作プロセスを理解していれば、scrapyを理解することは非常に有用です。

  3. 私たちは、TXTファイルに書き込まれたデータをクロールするためのパイプラインファイルを書きます。
    クラスFilePipeline(オブジェクト):
         DEF process_item(自己、アイテム、クモ):
    
            データ = '' 
    
            開く(' cnblog.txt '' A '、エンコード= ' UTF-8 ' )、Fとして:
                タイトル =項目[ ' タイトル' ] 
                リンク =項目[ ' リンク' ]
                 用の I、J ジッパー(タイトル、リンク):
                    データ + = I + '      ' + J + '\ nは
    
                f.write(データ)
                f.close()
            の戻り項目
  4. 設定ファイルを変更します
    = FalseのROBOTSTXT_OBEYの           #の変更は、このパラメータを取る必要がありますFALSです
    DEFAULT_REQUEST_HEADERS = {
        ' 受け入れる'' text / htmlの、アプリケーション/ XHTML + xmlの、アプリケーション/ XML、Q = 0.9、* / *; Q = 0.8 ' ' 言語受け入れ'' EN ' #のユーザエージェントを新添加
        ' ユーザエージェント'" のMozilla / 5.0(Windows NTの10.0; Win64の、のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 58.0.3029.110サファリ/ 537.36 " 
    } 
    新修改 
    ITEM_PIPELINES = {
         ' cnblog.pipelines。 FilePipeline ":300、    txtファイルに保存された達成
    
    }
  5. 、メインファイルを書くscrapyが内部コンパイラをデバッグすることはできませんが、我々は自分自身にマスターファイルを書き込むことができ、マスターファイルは、コンパイラ内部のモーダルとして通常のプロジェクトとして実行することができます。コードは以下の通りです
    scrapy インポートCMDLINEの
    
    cmdline.execute(scrapyクロールcnblog_spider --nolog  .split())       --nologは、あなたがより多くの情報が必要かどうかを確認するために実行ログの形式で表示されていない、あなたが削除することができます

     今、私たちのケースが終了した場合でも、実行main.py、cnblog.Ttxtファイルを生成します、の内容は、我々がダウンクロールということです。下記に示すように、

最後に、この収穫や感情の例を書くことについて話:コードをノックする過程では、Pythonで自分自身を見つけると、ループは(ない、突然のすべての書き込みの後、またはマルチPYを書くことであっても、知識のポイントをいくつかのために十分な強さではありません)ああ間違っていました!そこその時々も成功した操作の例を書き出すことができていない、前scrapyを学び、実際には圧力がない動機ではなく、高齢者の要請で、この時間は、最終的には成功して書きました。道路が学習するので、難しいですが、それは逃れることはありません。それを是非!

おすすめ

転載: www.cnblogs.com/liangxiyang/p/10960516.html