1

単純なページのセットをスクレイピングしたかったので、OpenRefine を使用して各ページの HTML を取得し、解析することにしました。私は特定のタグのコンテンツを探していますが、奇妙なことに、OpenRefine はその特定のタグを表示していません。OR がタグを省略したのはこれが初めてで、その理由はわかりません。詳細は次のとおりです。

次のブログの各ブログ投稿に割り当てられたカテゴリをスクレイピングしています。

http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p00-0.html

ページ URL の範囲は、p00-0.html から p330-0.html までです。

したがって、0 から 330 までのページの列があり、これを次のように URL と結合します。

" http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo/p " + 値 + "-0.html"

各ページの HTML コンテンツをスクレイピングすると、次の行に沿って何かが表示されることが予想されます (最初のエントリから予想される結果は次のとおりです)。

<h3>Les prédictions du mage Houellebecq - Charlie Hebdo N°1177 - 7 janvier 2015</h3>

<div class="itemfooter"> Thèmes >> <a href="http://stripsjournal.canalblog.com/tag/2022"         
rel="tag">2022</a>, 

    <a href="http://stripsjournal.canalblog.com/tag/Houellebecq" rel="tag">Houellebecq</a>, 

    <a href="http://stripsjournal.canalblog.com/tag/Les%20Unes%20de%20Charlie%20Hebdo" rel="tag">Les         
    Unes de Charlie Hebdo</a>, 

    <a href="http://stripsjournal.canalblog.com/tag/livres" rel="tag">livres</a>, 

    <a href="http://stripsjournal.canalblog.com/tag/ramadan" rel="tag">ramadan</a>, 

    <a href="http://stripsjournal.canalblog.com/tag/religion" rel="tag">religion</a>, 

    <a href="http://stripsjournal.canalblog.com/tag/%C3%A9lections" rel="tag">élections</a>

</div>

<p><p style="text-align: center;"><a name="IMG_101392446"     
href="http://p2.storage.canalblog.com/24/72/177230/101392446_o.jpg" target="_blank"><img     
src="http://p2.storage.canalblog.com/24/72/177230/101392446.jpg" border="0" alt="01-1177-
Houellebecq" width="355" /></a></p>

代わりに、OR はタグを完全に省略し、次の出力を生成します。

<h3>Les prédictions du mage Houellebecq - Charlie Hebdo N°1177 - 7 janvier 2015</h3>

<p><p style="text-align: center;"><a name="IMG_101392446"     
href="http://p2.storage.canalblog.com/24/72/177230/101392446_o.jpg" target="_blank"><img     
src="http://p2.storage.canalblog.com/24/72/177230/101392446.jpg" border="0" alt="01-1177-
Houellebecq" width="355" /></a></p>

私はばかげたぼんやりした間違いを犯しましたか、それとも何か問題がありますか?

4

2 に答える 2

1

OpenRefine は何も省略していません。Web サイトは、クライアントの認識に応じて異なる HTML を送信しています。受け取った HTML を見て、私が受け取ったものと同じであれば、デスクトップ バージョンではなくモバイル バージョンのサイトであることがわかります。

彼らがモバイル版の送信をトリガーするシグナルとして何を使用しているかは不明です (そして、OpenRefine は HTML ヘッダー フィールドの適切な制御を提供していません)。そのため、簡単に回避できないかもしれませんが、OpenRefine はそうではありません受け取ったものはすべてドロップします。

于 2015-01-11T20:57:15.797 に答える
1

ここで、適切なユーザー エージェント文字列またはブラウザ ID が役立ちます。デフォルトのユーザーエージェント文字列「OpenRefine/2.6」ではなく、リクエストを送信している実際のブラウザーを装います。

開発バージョンまたはそれを少しハックするものを使用している場合: ユーザー エージェント (ブラウザー ID) を微調整または設定する場合は、これの下部で行うことができます: https://github.com/OpenRefine/OpenRefine/ブロブ/マスター/メイン/src/com/google/refine/RefineServlet.java

そしてビルドします。

標準バージョンを使用している場合: 簡単にするためにhttp://localhost:3333/preferences、「User-Agent」という名前のプロパティに移動して、「Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (Gecko などの KHTML) Chrome /41.0.2228.0 サファリ/537.36"

于 2015-01-12T16:54:08.490 に答える