• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl  スクレイピング処理について)

Perlスクレイピングでのtwitterとfacebookの情報抜き出し方法

このQ&Aのポイント
  • Perlのスクレイピング処理で、TwitterとFacebookの情報を抜き出す方法について教えてください。
  • リンクの構成ページから、TwitterとFacebookの情報を分けて取得する方法を教えてください。
  • 「#share_item ul li」のように#がつく記述と付かないパターンがあるのですが、この違い(#が必要な時)が不明です。教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

表示がくずれので空白2文字を全角空白にしていることに注意。 use strict; use warnings; use utf8; use Web::Scraper; use Data::Dumper; my $html = << 'END_HTML'; <html>  <head>  </head>  <body>   <div id="share_item">    <ul>     <li>      <a href="http://twitter.com/share?text=xxx&via=test_mk" target="_blank" onclick="s_omni.trackSNS('twitter')">twitter</a>     </li>     <li>      <a href="http://www.facebook.com/share.php?u=http://aaa.c" target="_blank" onclick="s_omni.trackSNS('facebook')">face book</a>     </li>     <li>     </li>     <li>      <link rel="mixi-check-image" type="image/jpeg" href="http://aaa.com//img/site/3.jpg" />      <a href="javascript:void(0);"        onclick="window.open('http://mixi.jp/share.pl?u=http://aaa.com/&k=cf68"        src="http://aaa.com/btn5.gif" alt="mixiチェック">mixi</a>     </li>    </ul>   </body>  </html> END_HTML my $scraper = scraper {   process '#share_item ul li a[href^="http://twitter.com/"]', 'twi_url' => '@href';   process '#share_item ul li a[href^="http://www.facebook.com/"]', 'fb_url' => '@href'; }; my $res = $scraper->scrape($html) || die "$!"; print Dumper($res); # $VAR1 = { #      'twi_url' => 'http://twitter.com/share?text=xxx&via=test_mk', #      'fb_url' => 'http://www.facebook.com/share.php?u=http://aaa.c target=' #     }; > 「#share_item ul li」 > のように # がつく記述と付かないパターンがあるのですが、 > この違い(#が必要な時)が不明です。 「CSS 一意セレクタ」で調べてみて下さい。

niko314
質問者

お礼

ご回答ありがとうございました! 頂きました回答を基に、なんとか取得することができました。

niko314
質問者

補足

ご回答頂き、誠にありがとうございました。 a[href^="http://twitter.com/ で、href の行頭が「http://twitter.com/」の データを抜き取る方法ということですね。 私の環境で、全く同じ内容で試してみたのですが process '#share_item ul li a[href^="http://twitter.com/"]', 'twi_url' => '@href'; を実行すると、↓ -------------------------------------- '//*[@id='share_item']//ul//li//a[@href^='http://twitter.com/']' doesn't look like a valid XPath expression: Query: //*[@id='share_item']//ul//li//a[@href^='http:... .....................................^^^ Invalid query somewhere around here (I think) -------------------------------------- のようにXpath の形式が異なると言われ、正常に取得できませんでした。

その他の回答 (1)

回答No.2

たぶん、Web::Scraperで使われているHTML::Selector::XPathが古いです。

関連するQ&A

専門家に質問してみよう