0

繰り返される HTML ブロックを自動検出し、ブロック内のテキスト コンテンツをスクレイピングする Web スクレイピング ツールまたはライブラリはありますか?

これは、最新のコンテンツ Web サイトが PHP や Python などのサーバー側言語によって動的に生成されるという仮定に基づいています。コンテンツはほとんどの場合、テンプレートの for ループによってレンダリングされるため、繰り返される HTML ブロックは常に見つかります。例:

<div id="content">

<div class="blog entry">
    <div class="title">
        <h1>1st post</h2>
    </div>
    <div class="content">
        <p>...</p>
    </div>
</div>

<div class="blog entry">
    <div class="title">
        <h1>2nd post</h2>
    </div>
    <div class="content">
        <p>...</p>
    </div>
</div>

<div class="blog entry">
    <div class="title">
        <h1>3rd post</h2>
    </div>
    <div class="content">
        <p>...</p>
    </div>
</div>

</div>

bautiful soap や Scrapy などのライブラリは、スクレイピングを実行する前に人間がルールを入力することに依存しています。それらは私が望むものではありません。

4

3 に答える 3

0

HTQL を試すことができます。

import htql;
a=htql.Browser();

p,b=a.goUrl('http://channel9.msdn.com/Blogs/Vector/Announcing-BUILD-2012');
htql.query(p, '&html_main_text'); 

p,b=a.goUrl('http://stackoverflow.com/questions/tagged/screen-scraping');
htql.query(p, '&html_main_text'); 
于 2012-07-28T05:14:46.600 に答える
0

使用していませんが、scrapelyについて聞いたことがあります。

ほとんどのスクレイピング ライブラリとは異なり、Scrapely は DOM ツリーや xpath で動作しないため、lxml や libxml2 などのライブラリに依存しません。代わりに、不適切な形式の HTML を受け入れることができる内部の pure-python パーサーを使用します。HTML はトークン ID の配列に変換され、抽出するアイテムの照合に使用されます。

Scrapely 抽出は、インスタンス ベースの学習アルゴリズムに基づいており、一致したアイテムは、A Hierarchical Approach to Wrapper Induction に触発されたパーサーのツリーを使用して、複雑なオブジェクトに結合されます (ネストされた反復オブジェクトをサポートします)。

于 2012-07-25T08:56:21.847 に答える
0

私のスクレイピング ライブラリを見たいと思うかもしれません。自動では機能せず、繰り返し部分も検出しません。ただし、ルールはまったく必要なく、代わりにテンプレートを使用するため、HTML から直接取得できます。

たとえば、上記の例では、2 つの配列ですべての投稿を読み取るテンプレートは次のとおりです。

 <div id="content">

 <div class="blog entry">
     <div class="title">
         <h1>{title:=.}</h1>
     </div>
     <div class="content">
         <p>{content:=.}</p>
     </div>
 </div>*


 </div>
于 2012-07-25T09:58:53.097 に答える