![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
以下のような構成のページから、前半2つの twitter ,facebook のみを
process '#share_item ul li', 't_url' => '@href';
のような形で抜き出したいのですが、
これだとtwitterからmixi までの情報を一気に取得してしまいます。
process '#share_item ul li', 'twi_url' => '@href';
process '#share_item ul li', 'fb_url' => '@href';
のように、それぞれ分けて取得するよい方法はありますでしょうか?
----------(ここから)---------
<div id="share_item">
<ul>
<li>
<a href="http://twitter.com/share?text=(略)&via=test_mk" target="_blank" onclick="s_omni.trackSNS('twitter')">
<img src="http://aaa.com/btn1.gif" alt="twitterでつぶやく" />
</a>
</li>
<li>
<a href="http://www.facebook.com/share.php?u=http://aaa.c … target="_blank" onclick="s_omni.trackSNS('facebook')"><img src="http://www.aaa.com/common/btn2.gif" alt="facebookでシェア" /></a>
</li>
<li>
<a href="mailto:?subject=
~(略)~alt="
メールで知らせる" />
</a>
</li>
<li>
<a href="http://mixi.jp/recent_voice.pl?from=home_profile" target="_blank" onclick="s_omni.trackSNS('mixi')">
<img src="http://aaa.com/btn4.gif" alt="mixiで知らせる" /></a>
</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 …['width=632','height=456','location=yes','resizable=yes','toolbar=no','menubar=no','scrollbars=no','status=no'].join(','));"><img src="http://aaa.com/btn5.gif" alt="mixiチェック"></a>
</li>
</ul>
</div>
----------(ここまで)---------
(2)これは補足的な質問なのですが、
「#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 一意セレクタ」で調べてみて下さい。
この回答への補足
ご回答頂き、誠にありがとうございました。
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 の形式が異なると言われ、正常に取得できませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
先月(YYYYMM)の生成方法
-
a shower.
-
年令の計算方法
-
Application.ScreenUpdating = ...
-
文字の横にプルダウンを表示さ...
-
JSONで文字列が長い時
-
この曲のピアノの最後の和音が...
-
ACCESS テキストボックスを隙...
-
formで特定のinputを送信しない...
-
FindFirst を複数条件で検索
-
実行時エラー 3020の対策
-
UWSCのSELECT文の記述方法
-
Net::FTP使用時の取得値をどう...
-
セレクトメニューで2つの項目...
-
pythonの*
-
数値かどうかの判定方法
-
pythonで演算子を変数に代入す...
-
C++ コマンドプロンプトでの入...
-
初回起動のみ判別したい
-
SELECTタグの選択肢において、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1桁の日付に0を付ける
-
前日の日付取得するには?
-
「型が一致しません」のエラー...
-
Schemeのプログラミング うる...
-
日付の差分の求め方(日、分)
-
perlでcheckboxがうまく整理で...
-
Perlで日付を取得する
-
日齢計算プログラム
-
うるう年の出し方
-
CSVファイルに出力
-
年令の計算方法
-
12月から1月へのリンク
-
C言語を用いて、2つのファイル...
-
2つの日付・時間の差分を求め...
-
先月(YYYYMM)の生成方法
-
Perlでsprintf("%02d",$month)...
-
サマータイムの判定について
-
CSV読み込み時に条件に合う行(...
-
T-SQL(SQL Server2000) 月数の...
-
ソースの詳細を教えてください。
おすすめ情報