簡體   English   中英

如何從不使用 POST 的網站抓取信息

[英]How to scrape information from a website that doesn't use POST

我需要從使用 HTML 選擇來過濾其內容的網站獲取一些信息。 但是,我在這樣做時遇到了困難,因為從選擇更改值時,網站不會“重新加載”它使用一些內部函數來獲取新內容。

有問題的網頁是這樣的,如果我使用 Chrome 開發人員工具查看更改選擇值時會發生什么。 我接到一個看起來像這樣的電話。

index.php?eID=dmmjobcontrol&type=discipline&uid=77&_=1535893178522

有趣的是,uid 是 select 選項的 id,所以我們得到了正確的 id。 但是,當我轉到此鏈接時,我只會看到一個頁面說null

考慮到類似的網站,這個. 當我在那里更改選擇表單時,我會得到一個表單數據,我可以用它來獲取我想要的信息。

我對抓取還很陌生,老實說,我不明白如何獲得這些信息。 如果是為了某些用途,我會在 python 中使用 scrapy 來解析來自網站的信息。

一種解決方案是使用客戶端層,它同時執行:您的抓取“腳本”和網站發送的所有 javascript,模擬真實的瀏覽器。 我成功地將 PhantomJS 與 Selenium aka Webdriver API 一起使用: https ://selenium-python.readthedocs.io/getting-started.html

請注意,從歷史上看,Selenium 是第一個這樣做的產品,因此這個 API 的名稱。 在我看來,PhantomJS 更適合,默認情況下是無頭的(不運行任何 GUI 進程)並且速度更快。 Selenium 和 PhantomJS 都實現了一個名為 Webdriver 的協議,您的 Python 程序將使用該協議。

這聽起來可能很復雜,但請使用上面引用的入門文檔並檢查它是否適合您。

編輯:本文還包含使用所述設置的簡單示例: https : //realpython.com/headless-selenium-testing-with-python-and-phantomjs/

請注意,在許多文章中,人們為測試做了類似的事情,因此甚至沒有提到“抓取”一詞。 但從技術上講,它是相同的 - 模擬用戶在瀏覽器中單擊並最終從特定頁面元素獲取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM