Re: [問題] 請問關於抓網頁的語法
※ 引述《senhuo (努力吧)》之銘言:
: 請問 我想從google搜尋引擎找出所輸入的關鍵字後 所出現的各頁面的連結
: 目前做到在google上 自動輸入某關鍵字 如:「台灣」
: 但找出來的資料量非常多,一定也有分成好多頁
: 所以 我就將下面分頁的連結全部存起來
: 再打算利用程式一頁一頁去抓每一個相關的網頁連結
: 但現在遇到一個問題 搜尋「台灣」後
: 我找了下面第二頁的連結,如下
: http://www.google.com.tw/search?q=%E5%8F%B0%E7%81%A3&complete=1&hl=zh-TW&inlang=zh-TW&start=10&sa=N
: 縮網址是 http://0rz.tw/a93cK
: 要利用 get "網址" 這個語法 抓取這一頁上的連結時
: 卻沒辦法
: 是不是get語法只能用在固定的網址中
: 如 http://www.pchome.com.tw 或http://xxxx/index.htm
: 經過編譯過的符號 會沒辦法判斷出來
: 請問各位高手們
: 遇到這種問題應該如何解決呢
: 有沒有別的語法可以支援呢
: 感謝~~ orz
: 程式碼如下:
: #! /usr/bin/perl
: #--------------------------------------
: use LWP::Simple;
: use HTML::Parse;
: use HTML::Element;
: use URI::URL;
: use DBI;
: use WWW::Mechanize;
: $http="http://www.google.com/search?q=%E5%8F%B0%E7%81%A3&hl=zh-TW&lr=&start=10&sa=N";
: $htm = get $http;
: print $htm;
我常用的一段程式,拿去用看看吧
use Net::HTTP;
$string = get("http://xxxx/index.htm");
sub get
{
my $url=shift;
my $retr;
($host,$addr)=$url=~qq#http://(.*?)/(.*)#;
my $s = Net::HTTP->new(Host => $host) || die $@;
$s->write_request(GET => "/$addr", 'User-Agent' => "Mozilla/4.0");
my($code, $mess, %h) = $s->read_response_headers;
while (1) {
my $buf;
my $n = $s->read_entity_body($buf, 1024);
die "read failed: $!" unless defined $n;
last unless $n;
$retr=$retr.$buf;
}
return $retr;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.133
推
10/24 13:16, , 1F
10/24 13:16, 1F
→
10/24 13:43, , 2F
10/24 13:43, 2F
推
10/24 14:58, , 3F
10/24 14:58, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章