ScrapyのScrapy shell

3781 ワード

Scrapy Shell
Scrapy端末はインタラクティブな端末で、spiderを起動しないでコードを試したりデバッグしたりすることができます.XPathやCSS式をテストしたりして、彼らの働き方を見たりすることができます.私たちが登ったページから抽出したデータを便利にすることができます.
IPythonがインストールされている場合、Scrapy端末はIPython(標準Python端末に代わる)を使用します.IPython端末は他のものよりも強力で、スマートな自動補完、ハイライト出力、その他の特性を提供しています.(IPythonのインストールを推奨)
Scrapy Shellの起動
プロジェクトのルートディレクトリに入り、shellを起動するには次のコマンドを実行します.
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"

Scrapy Shellは、ダウンロードしたページに基づいて、ResponseオブジェクトやSelector ( HTML XML )など、使いやすいオブジェクトを自動的に作成します.
  • shellがロードされると、responseデータを含むローカルresponse変数が得られ、入力response.bodyはresponseのパケットを出力し、出力response.headersはresponseのパケットヘッダを見ることができる.
  • response.selectorを入力すると、responseが初期化したクラスSelectorのオブジェクトが取得され、response.selector.xpath()またはresponse.selector.css()を使用してresponseをクエリーできます.
  • Scrapyはまた、response.xpath()またはresponse.css()のようないくつかのショートカットを提供しています(前述の例のように).

  • Selectorsセレクタ
    Scrapy Selectors内蔵XPathとCSS Selector式メカニズム
    Selectorには4つの基本的な方法がありますが、最もよく使われているのはxpathです.
  • xpath():xpath式が入力され、その式に対応するすべてのノードのselector listリスト
  • が返される.
  • extract():ノードをUnicode文字列としてシーケンス化し、list
  • を返します.
  • css():CSS式を入力し、その式に対応するすべてのノードのselector listリストを返します.構文はBeautifulSoup 4
  • と同じです.
  • re():入力正規表現に基づいてデータを抽出し、Unicode文字列listリスト
  • を返す.
    XPath式の例と対応する意味:
    /html/head/title:   <HTML>    <head>      <title>    /html/head/title/text():         <title>       //td:       <td>    //div[@class="mine"]:        class="mine"     div    

    Selectorを試します
    私達はテンセント社の募集するウェブサイトを使いますhttp://hr.tencent.com/position.php?&start=0#a例:
    #   
    scrapy shell "http://hr.tencent.com/position.php?&start=0#a"
    
    #    xpath       
    response.xpath('//title')
    [\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058]
    
    #    extract()     Unicode     
    response.xpath('//title').extract()
    [u'\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058']
    
    #          ,        
    print response.xpath('//title').extract()[0]
         |      | Tencent     
    
    #    xpath       
    response.xpath('//title/text()')
    
    
    #           Unicode   
    response.xpath('//title/text()')[0].extract()
    u'\u804c\u4f4d\u641c\u7d22 | \u793e\u4f1a\u62db\u8058 | Tencent \u817e\u8baf\u62db\u8058'
    
    #          
    print response.xpath('//title/text()')[0].extract()
         |      | Tencent     
    
    response.xpath('//*[@class="even"]')
        :
    
    print site[0].xpath('./td[1]/a/text()').extract()[0]
    TEG15-       (  )
           :
    
    print site[0].xpath('./td[1]/a/@href').extract()[0]
    position_detail.php?id=20744&keywords=&tid=0&lid=0
        :
    
    print site[0].xpath('./td[2]/text()').extract()[0]
       
    

    後でデータの抽出をする時、現在のScrapy Shellの中でテストすることができて、テストは合格した後に更にコードの中で応用します.
    もちろんScrapy Shellの役割はそれだけではありませんが、私たちのカリキュラムの重点ではなく、詳しく紹介しません.
    公式ドキュメント:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/shell.html
    転載先:https://www.cnblogs.com/wzjbg/p/6507559.html