Re: [問題] 請問關於抓網頁的語法

看板Perl作者 (jet)時間17年前 (2007/10/24 07:54), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《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.twhttp://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
謝謝 但小弟指的是要get http://0rz.tw/a93cK 這頁耶..
10/24 13:16, 1F

10/24 13:43, , 2F
我剛試過可以用 是哪裡不行?
10/24 13:43, 2F

10/24 14:58, , 3F
j大 真是歹勢 ~ 剛試過可以~謝謝啊 版上真多高手...
10/24 14:58, 3F
文章代碼(AID): #177ecPpw (Perl)
文章代碼(AID): #177ecPpw (Perl)