2016-07-22 14 views
0

私は、Scrawlingの両面で、クロールとスクレーピングの両方の要求に遭遇しました。しかし、アプリケーションの要件に応じて、私はモノリシックなアプローチにならないことに決めました。すべてがサービスベースでなければなりません。そこで私は2つのサービスを設計することにしました。Scrapy:URLからではなくHTMLのアイテムをスクラップします

  1. すべてのURLとHTMLを取得します。 s3でアップロードします。

なぜHTMLから

  • スクラップアイテム?シンプルな今日、私はそれから10アイテムを取り除くことにしました、明日私はスクラップ20(アプリケーション要件)したい。この場合、htmlが同じになるため、urlとhtmlを再度クロールする必要はありません(コメントのみが追加され、コンテンツはURLごとに同じです)。

    最初のサービスはScrapyに基づいています。私は、start URLの代わりにhtmlを提供できるかどうか、またはBeatifulSoapやその他のスクレイピングライブラリを使用しなければならないかどうかを調べるために、同じものを使用できるかどうかを調べていました。

  • +0

    あなたのhtmlソースは、あなたがまだそれらをダウンロードして、非同期的にそれらをクロール:)それを見てみると – Granitosaurus

    答えて

    1

    (HTML/XMLからデータを抽出できるようにする)セレクタは、parselという独立したプロジェクトとしてパッケージ化されました。

    S3のUnicode HTML文字列をparsel.Selectorに渡すことができる場合は、「通常の」ライブ処理プロジェクトと同じデータ抽出を行うことができます。 the docsから

    例:

    >>> from parsel import Selector 
    >>> sel = Selector(text=u"""<html> 
         <body> 
          <h1>Hello, Parsel!</h1> 
          <ul> 
           <li><a href="http://example.com">Link 1</a></li> 
           <li><a href="http://scrapy.org">Link 2</a></li> 
          </ul 
         </body> 
         </html>""") 
    >>> 
    >>> sel.css('h1::text').extract_first() 
    u'Hello, Parsel!' 
    >>> 
    >>> sel.css('h1::text').re('\w+') 
    [u'Hello', u'Parsel'] 
    >>> 
    >>> for e in sel.css('ul > li'): 
         print(e.xpath('.//a/@href').extract_first()) 
    http://example.com 
    http://scrapy.org 
    
    +0

    をするscrapyを使用することができS3に格納されている場合。しかし、それはまだBeatifulSoapのような別の図書館でしょう。 – SangamAngre

    関連する問題