documents:proglang:perl:perl-010
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| documents:proglang:perl:perl-010 [2026/05/08 11:54] – ↷ documents:perl:perl-010 から documents:proglang:perl:perl-010 へページを移動しました。 k896951 | documents:proglang:perl:perl-010 [2026/05/17 15:02] (現在) – [Perlで WWW::MechanizeとWeb::Scraper を使いWebページのクロールをやってみる] k896951 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== 009.Perlで WWW:: | ||
| + | |||
| + | 2012/ | ||
| + | PerlでWWW:: | ||
| + | 内容はRSSで取ったほうが早いけど、あくまでサンプルなので。 | ||
| + | |||
| + | 2013/ | ||
| + | こちらのドキュメントは管理都合によりPerl関連ドキュメントのネームスペースへ移動しました。 | ||
| + | |||
| + | ===== Yahoo!ニュースのトピック切り出し ===== | ||
| + | |||
| + | |||
| + | とりあえずこんなコードは良く見かけますが例を挙げておきます。yatopic.plとでもしておきましょうか。 | ||
| + | <code perl yatopic.pl> | ||
| + | use Encode; | ||
| + | use WWW:: | ||
| + | use Web:: | ||
| + | |||
| + | my $baseUrl | ||
| + | my $yahooUrl = ' | ||
| + | my $encstr | ||
| + | my $mech = WWW:: | ||
| + | |||
| + | my $topicsMenuParse = scraper { | ||
| + | process '// | ||
| + | | ||
| + | | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | my $topicsLinkParse = scraper { | ||
| + | process '// | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | my $menuResult; | ||
| + | |||
| + | $mech-> | ||
| + | |||
| + | $mech-> | ||
| + | $menuResult = $topicsMenuParse-> | ||
| + | |||
| + | foreach my $categoryLink ( @{ $menuResult-> | ||
| + | { | ||
| + | my $topicResult; | ||
| + | my $text = encode($encstr, | ||
| + | my $href = encode($encstr, | ||
| + | |||
| + | printf(" | ||
| + | |||
| + | $mech-> | ||
| + | $topicResult = $topicsLinkParse-> | ||
| + | |||
| + | foreach my $topicLink ( @{ $topicResult-> | ||
| + | { | ||
| + | my $date = encode($encstr, | ||
| + | my $text = encode($encstr, | ||
| + | my $href = encode($encstr, | ||
| + | |||
| + | | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== 説明 ===== | ||
| + | |||
| + | yatopic.plでは、WWW:: | ||
| + | |||
| + | URL http:// | ||
| + | トピックスは | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | * | ||
| + | |||
| + | に別れている為、各々のトピックスへのリンクを取得する必要があります。 | ||
| + | HTML中から該当する箇所を切り出ししますが、そのHTMLの切り出し位置をXPathで指定します。 | ||
| + | < | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | DIVタグのid属性が" | ||
| + | |||
| + | 次にこのコレクションのリンクで指すページ(HTML)を一つずつ取得し、トピックの情報を切り出し、出力します。 | ||
| + | < | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | id属性が" | ||
| + | |||
| + | {{tag> | ||
documents/proglang/perl/perl-010.txt · 最終更新: by k896951
