Hatena::Groupperlmemo

Perlメモ

2008年09月18日 より開始
最新5件(RSS 2.0)
古いモジュールの更新

Plagger(Fedora10)
Plagger(Ubuntu9.04)

CPAN::Mini

Remedie(Ubuntu 9.04、Vine4.9(5α)、Fedora11Preview)
Remedie(Fedora10) 見れたサイトまとめ
編集

2012-03-25

全記事のURLリストを取得2

| 全記事のURLリストを取得2 - Perlメモ を含むブックマーク はてなブックマーク - 全記事のURLリストを取得2 - Perlメモ 全記事のURLリストを取得2 - Perlメモ のブックマークコメント

#!/usr/local/bin/perl
#記事URLのリストを表示

use strict;
use lib qw(./mylib);
use LWP::Simple;
use Encode;
use LWP;
use Web::Scraper;
use URI;

printURLList();  

sub printURLList {
	my $start = 1;
	my $lastPage =  3;  #最終ページを指定
	my $baseUrl = 'http://ameblo.jp/hiroyuki12/';

	for(my $i=$start; $i<=$lastPage; $i++)
	{
		my %hash;

		my $itemnumber = $i;
		my $url = $baseUrl . 'page-' . $itemnumber . '.html#main';

		# WEBページ取得して変数に格納
		my @data = split(/\n/, get($url));  #改行で分解して @dataへいれる
	
		foreach ( @data ) {
			if(/URL<.a>/ && /$baseUrl/) {
				s/<a href=.*?"//g;  #<a href= から " まで除去
				s/".*?a>//g;  #" から a> まで除去
				#print $_ . "\n";  #URLを表示 debug

				# 記事タイトルを myTitle という名前で取るスクレイパーを作成
				my $scraper = scraper {
					process 'h3.title', 'myTitle' => 'TEXT';
				};

				# 記事ページのURLオブジェクトを、
				my $uri = new URI($_);

				# 先ほどのスクレイパーに渡す。(スクレイピングされる)
				my $res = $scraper->scrape($uri);

				print encode('utf-8', $res->{myTitle} . "," . $_ . "\n");  #タイトルとURL
			}
		}
	}
	
	return 0;
}

sub Header {
	print "Content-type: text/html\n";
	print "\n";
	print "<html>\n";
	print "<head>\n";
	print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . "\n";
	print "<title>hatenaidea</title>\n";
	print "</head>\n";
	print "<body bgcolor=\"#ffcccc\">\n";
	
	return 0;
}

sub Footer {
	print "</body>\n";
	print "</html>\n";

	return 0;
}

$ perl a.pl

2011-09-21

全記事のURLリストを取得

| 全記事のURLリストを取得 - Perlメモ を含むブックマーク はてなブックマーク - 全記事のURLリストを取得 - Perlメモ 全記事のURLリストを取得 - Perlメモ のブックマークコメント


#!/usr/local/bin/perl
#記事URLのリストを表示

use strict;
use lib qw(./mylib);
use LWP::Simple;
use Encode;
use LWP;

printURLList();  

sub printURLList {
	my $start = 0;
	my $page =  2;  #最終ページを指定

	my $ua = LWP::UserAgent->new();
	for(my $i=$start; $i<$page; $i++)
	{
		my %hash;

		my $itemnumber = $i;
		my $url = 'http://ameblo.jp/hiroyuki12/page-' . $itemnumber . '.html#main';

		# WEBページ取得して変数に格納
		my @data = split(/\n/, get($url));  #改行で分解して @dataへいれる
		
		foreach ( @data ) {
			if(/URL/) {
				s/<a href=.*?"//g;  #<a href= から " まで除去
				s/".*?a>//g;  #" から a> まで除去
				#print $_ . "\n";  #URLを表示

				my $res = $ua->get($_);
				if($res->is_success){
					my $title=$res->title;
					my $len = length($title);
					my $lenBlogName = 29;  #Vine Linux 6(あめぶろ)
					$title = substr($title,0, $len - $lenBlogName);
					print $title . "," . $_ . "\n";  #タイトル

					#$hash{$title} = $_;  #ハッシュに代入

					#print $hash{$title} . "\n";  #URL
				} else {
					print $res->status_line;
				}
			}
		}
	
		

	}
	
	return 0;
}

sub Header {
	print "Content-type: text/html\n";
	print "\n";
	print "<html>\n";
	print "<head>\n";
	print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . "\n";
	print "<title>hatenaidea</title>\n";
	print "</head>\n";
	print "<body bgcolor=\"#ffcccc\">\n";
	
	return 0;
}

sub Footer {
	print "</body>\n";
	print "</html>\n";

	return 0;
}

$ perl a.pl > a.txt

2008-11-05

リンク抽出(五十音のページからリンク一覧を作成(3))

| リンク抽出(五十音のページからリンク一覧を作成(3)) - Perlメモ を含むブックマーク はてなブックマーク - リンク抽出(五十音のページからリンク一覧を作成(3)) - Perlメモ リンク抽出(五十音のページからリンク一覧を作成(3)) - Perlメモ のブックマークコメント

$ sudo cpan HTTP::Lite

$ sudo cpan HTML::TreeBuilder

#!/usr/bin/perl

use strict;
use warnings;
use HTTP::Lite;
use HTML::TreeBuilder;

my $http = new HTTP::Lite;

# URL部分を変更して下さい
my $req = $http->request("http://hiroyuki12.blog34.fc2.com/blog-entry-227.html") || die $!;

my $body = $http->body();

my $tree = HTML::TreeBuilder->new;
$tree->parse($body);
$tree->eof();

foreach $a ($tree->find("a")) {
  print $a->attr('href');
  print "\n";
}

exit;

$ perl test.pl > out


Geekなぺーじ : HTML::TreeBuilderによるパース(リンクの取得)

2008-10-23

リンク抽出(五十音のページからリンク一覧を作成(2))

| リンク抽出(五十音のページからリンク一覧を作成(2)) - Perlメモ を含むブックマーク はてなブックマーク - リンク抽出(五十音のページからリンク一覧を作成(2)) - Perlメモ リンク抽出(五十音のページからリンク一覧を作成(2)) - Perlメモ のブックマークコメント

アメブロ

use strict;
use warnings;
use LWP;
use HTML::LinkExtor;

my $url="http://hiroyuki12.blog34.fc2.com/blog-entry-227.html";
my $browser = LWP::UserAgent->new;
my $response = $browser->get($url);

my $p = HTML::LinkExtor->new(\&callback,$url);
$p->parse($response->{_content});

sub callback {
    my(my $tag, my %links) = @_;
    my $temp = "@{[%links]}";
    if($temp =~ /entry-/) {
      $temp =~ s/href //g;
      print $temp . "\n";
    }
}

$ perl test.pl > test.txt


urllist.txt 作成

use strict;
use warnings;
use LWP;
use HTML::LinkExtor;

my $url="http://perlmemo.g.hatena.ne.jp/fedora9/20160315/p1";
my $browser = LWP::UserAgent->new;
my $response = $browser->get($url);

my $p = HTML::LinkExtor->new(\&callback,$url);
$p->parse($response->{_content});

sub callback {
    my(my $tag, my %links) = @_;
    my $temp = "@{[%links]}";
    if($temp =~ /b.hatena.ne.jp/) {
      $temp =~ s/href //g;
      print $temp . "\n";
    }
}

$ perl link.pl > urllist.txt



PC Memorandom of augustus: perl でリンクを抽出する

2008-09-18

getlist.txtのアドレスからhtmlをダウンロード

| getlist.txtのアドレスからhtmlをダウンロード - Perlメモ を含むブックマーク はてなブックマーク - getlist.txtのアドレスからhtmlをダウンロード - Perlメモ getlist.txtのアドレスからhtmlをダウンロード - Perlメモ のブックマークコメント

ameba-get.cgi

$ sudo cpan LWP::Simple File::Spec

#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use File::Spec;

open(IN,"getlist.txt");

while(<IN>) {
  chomp;  #改行を削除
  my $url = $_;
  my $file;
  (undef,undef,$file) = File::Spec->splitpath($url);
  getstore("$url","$file");
}


五十音のページからリンク一覧を作成

| 五十音のページからリンク一覧を作成 - Perlメモ を含むブックマーク はてなブックマーク - 五十音のページからリンク一覧を作成 - Perlメモ 五十音のページからリンク一覧を作成 - Perlメモ のブックマークコメント

ブラウザでアクセスするとアドレスが表示されるので、

ソースを表示してアドレスをコピー。getlist.txtに保存。

http://hiroyuki12.sakura.ne.jp/ameba-address-get.cgi

#!/usr/local/bin/perl

use strict;
use lib qw(./mylib);
use LWP::Simple;


# 取得して変数に格納
my @data = split(/\n/, get('http://hiroyuki12.blog34.fc2.com/blog-entry-227.html'));  #改行で分解して @dataへいれる

#getstore('http://hiroyuki12.ameblo.jp/hiroyuki12/entry-10034699308.html', 'entry-10034699308.html');


my @array;
my $i = 0, my $rank = 0; my $flg = 0;

# アドレスを、@arrayへ。
foreach ( @data ) {
	if(/<div class="mainEntryBody">/)  {
		$flg = 1;
	}
	
	if($flg == 1)
	{
		if(/<a href=/) {
			s/<br.*?>/<br \/>\n/gi;  #<br />の後ろに\n追加
			#s/<.*?>//g;  #HTMLタグの除去
			#my $address = /<a href="(.*?)">/g;
			s/<a href="//g;  #<a hrefを削除
			s/".*//g;  #”以降を削除
			s/<div.*//g;  #<div以降を削除
			s/<br.*//g;  #<br以降を削除
			#$data[$i] =~ s/^..//g;  #先頭から半角2文字除去(先頭の■を除去)
			push(@array, $_ );
		}
	}
}





print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print '<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">' . "\n";
print "<title>address get</title>\n";
print "</head>\n";
print "<body bgcolor=\"#ffcccc\">\n";

#print @data;
print @array;

#open(OUT,">out.txt");
#print OUT @array;
#close OUT;

print "</body>\n";
print "</html>\n";

JasonFoetsJasonFoets2017/01/25 04:27печать буклетаов http://wkrolik.com.ua/products/buklety