ScrapyShell使用

2856 ワード

Scrapy Shell
Scrapy端末はインタラクティブな端末で、spiderを起動しないでコードを試したりデバッグしたりすることができます.XPathやCSS式をテストしたりして、彼らの働き方を見たりすることができます.私たちが登ったページから抽出したデータを便利にすることができます.
IPythonがインストールされている場合、Scrapy端末はIPython(標準Python端末に代わる)を使用します.IPython端末は他のものよりも強力で、スマートな自動補完、ハイライト出力、その他の特性を提供しています.(IPythonのインストールを推奨)
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  ,    BeautifulSoup4
re():                  ,  Unicode   list  

使用例:
        #   
        scrapy shell "http://hr.tencent.com/position.php?&start=0#a"

![Uploading scrapyshell1_605828.png . . .]
        #    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]