如何使用 WGET 導覽基於 PHP 的分頁?

如何使用 WGET 導覽基於 PHP 的分頁?

我正在嘗試為我們的下一個男嬰列出可能的名字,並且一直在瀏覽網站印度育兒。網站上的每個名稱都有一個詳細資訊頁面,其 URL 如下所示http://www.indiaparenting.com/babynames/meaning-of-Aadesh.shtml。我希望這個名字與我們的長子相似,並且正在嘗試執行以下操作:

  • WGET 網站中包含「meaning-of」的所有頁面到我硬碟上的單一資料夾,其中包含類似內容wget -nc -c -nd -r -l1 -k http://www.indiaparenting.com/babynames/hindu-boy-names.php -A "meaning-of*" -I /babynames
  • 做一些事情,例如dir > filenames.txt將所有內容放入一個文字檔案中。
  • 解析產生的檔案中的特定正規表示式以尋找可能的名稱。第一個兒子的名字是 Ranveer,我們正在尋找以 N 或 R 開頭的名字,因此正規表示式可能類似於:[NR][aeiou][^aeiou][^aeiou][aeiou]{2}[^aeiou]
  • 與女士一起手動查看最終名單並選擇一個名字!

我遇到的問題是 wget 。該頁面是用 PHP 創建的,底部有一個頁面導航器,它不會像平常一樣連結到另一個頁面的 URL:

尋呼部分

我查看了一下,發現JS pagingFunction:

function pagingFunction(labelName){         
    vpage = document.getElementById("pageNum");     
    pageNm = labelName;         
    vpage.value = pageNm;
    document.getElementById("frmPaging").submit();      
}

問題:我以為遞歸 WGETting 頁面會一頁一頁地移動,但事實並非如此。有沒有辦法用 WGET 來處理這個問題?如果沒有,還有其他選擇嗎?


其他資訊:我考慮過基於正則表達式生成一個列表,但它太長並且有太多無效名稱,這就是為什麼我想將其基於這些嬰兒名字網站之一的實際名稱。我還將聯繫該網站,看看他們是否能夠在其資料庫上運行查詢並將名稱放入文件中,如果其他方法都失敗,還有其他網站可供檢查。

答案1

這個網站的設計特別奇怪。不過請注意,PHP 在這裡沒有什麼差別。

看起來他們使用以下方法加載頁面:

  1. 點擊連結會執行一些 JS。
  2. 該 JS 使用頁碼填入隱藏表單。
  3. 然後該腳本提交表單,該表單向伺服器發出 POST 請求。
  4. 伺服器直接回應相關頁面。

您在這裡有幾個選擇。最簡單的方法是簡單地編寫一個循環wget請求--post-data腳本來檢索從 1 到 n 的所有頁面。請參閱文件和瀏覽器的網路監視器以了解實際請求是什麼。例如,Firefox 的網路監視器顯示請求內文如下:

Content-Type: application/x-www-form-urlencoded
Content-Length: 145

pagingQuery=select+*+from+tblbabynames+where+++religion%3D%27hindu%27+and+gender%3D%27M%27+limit+0%2C30&totalRows=3097&pageNum=2&searchResultNo=0

pageNum=2您也許可以在循環中替換。

一種更複雜的方法是使用像 Selenium 這樣的瀏覽器自動化工具包來逐字導航和點選鏈接,就像人類一樣激活 JS。

相關內容