- ベストアンサー
Perlスクレイピングでのtwitterとfacebookの情報抜き出し方法
- Perlのスクレイピング処理で、TwitterとFacebookの情報を抜き出す方法について教えてください。
- リンクの構成ページから、TwitterとFacebookの情報を分けて取得する方法を教えてください。
- 「#share_item ul li」のように#がつく記述と付かないパターンがあるのですが、この違い(#が必要な時)が不明です。教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
表示がくずれので空白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 一意セレクタ」で調べてみて下さい。
その他の回答 (1)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
たぶん、Web::Scraperで使われているHTML::Selector::XPathが古いです。
お礼
ご回答ありがとうございました! 頂きました回答を基に、なんとか取得することができました。
補足
ご回答頂き、誠にありがとうございました。 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 の形式が異なると言われ、正常に取得できませんでした。