2010-10-22 43 views
1

我查了一下關於使用LWP的文章,但是我仍然輸了!在這個網站上,我們找到許多學校的名單;請參閱overview-page並遵循一些鏈接並獲得一些結果頁面:如何使用Perl的LWP :: UserAgent獲取具有不同查詢字符串的相同URL?

我想解析使用LWP :: UserAgent的網站並進行解析:希望使用HTML :: TreeBuilder :: XPath或HTML :: TokeParser

目前我正在考慮選擇正確的取得請求! 我有一些與LWP :: Useragent有關的問題。概覽的子網站可以通過直接鏈接到達。但是 - 註釋:每個網站都有內容。例如以上提到的結果頁面的以下網址。

此處作爲一個新手,我不能張貼完整的URL告訴你不同的結局的結局,但在這裏你可以看到的結局:

id=21&extern_eid=709 
id=21&extern_eid=789 
id=21&extern_eid=1297 
id=21&extern_eid=761 

有跡象表明,在結尾部分不同許多不同的網址URL。問題是:如何運行LWP :: UserAgent?我想獲取並解析& **所有 - 1000個網站。**

問題; LWP是否自動完成工作!?還是我必須建立LWP :: UserAgent的,它會查找自動將不同的URL ...

解決方案:也許我們不得不形式零遞增到10000與有

extern_eid = 709 - (計數從零至100000)這裏

www-db.sn.schule.de/index.php?id=21 & extern_eid = 709

順便說一句:這裏LWP用戶代理中的數據;

請求方法的方法描述在本節 用於調度經由所述用戶代理 請求。該 以下請求方法是提供 :

$ UA->獲取($網址)$ UA->獲取($網址, $ FIELD_NAME => $值,...)

此方法在給定的$ url上發送GET 請求。進一步的 參數可以給出初始化 請求的標題。這些是作爲單獨的名稱/值對給出的 。 返回值是一個響應對象。 有關其提供的接口的說明 ,請參閱HTTP :: Response。如果LWP無法連接到URL中指定的服務器 或發生協議處理程序 中的其他故障, 仍將是響應對象 。

問題是:如何在上述網站上使用LWP :: UserAgent正確的方式 - 有效!?

我期待着任何和所有的幫助!

+0

這個問題怎麼被標記爲PHP?它看起來像是一個Perl問題... – Alvin 2010-10-23 00:00:50

+0

你好阿爾文 - 非常感謝你的郵件。當然。這是一個真正的Perl問題。我太累了,輸入了錯誤的標籤!現在我糾正了它!再次 - thx回答! Merci bien ;-) – zero 2010-10-23 03:49:22

回答

0

如果我正確理解你的問題,你試圖在具有不同查詢參數的相同URL上使用LWP :: UserAgent,並且你想知道LWP :: UserAgent是否爲你提供了一種循環查詢參數的方法?

我不認爲LWP :: UserAgent有一個方法可以讓你做到這一點。但是,你可以有一個循環構造URL和重複使用LWP :: UserAgent的:

for my $id (0 .. 100000) 
{ 
    $ua->get($url."?id=21&extern_eid=".(709-$id)) 
    //rest of the code 
} 

另外,您可以添加一個計算某個request_prepare處理器,添加查詢參數你發出請求之前。

+0

非常感謝Alvin!或 - 我最好這樣做: 我的$ i(0..10000){ $ ua-> get('http://www-db.sn.schule.de/index.php',id => 21,extern_uid => $ i); #process reply } 在任何情況下,使用這樣的循環來完成這種工作是一種方法。我猜LWP API並不是要取代核心Perl的功能,而是我們可以使用Perl循環來查詢多個URL。如果我創建一個循環 - 我有一些不匹配的結果:我在後續解析過程中做什麼。我會檢查!?我必須做一次檢查以擺脫所有不匹配的結果。 – zero 2010-10-23 14:51:13

0

您描述了以下用於網頁抓取的鏈接。 LWP子類0​​比您當前的嘗試更容易做到這一點。

相關問題