我需要刮這個頁面(它有一個表格):http://kllads.kar.nic.in/MLAWise_reports.aspx,最好用Python(如果不是Python,那麼JavaScript)。我在尋找類似RoboBrowser(基本上是Mechanize + BeautifulSoup)和(可能)Selenium這樣的圖書館,但我不太清楚如何去做。從檢查元素看來,它似乎是我需要填寫的一個WebForm。填充完成後,網頁會生成一些我需要存儲的數據。我應該怎麼做?我該如何刮這個?
Q
我該如何刮這個?
-1
A
回答
1
您可以用JavaScript的Web表單相對容易地在硒互動。您可能需要快速安裝webdriver,但除此之外,您只需使用xpath查找表單,然後讓Selenium使用選項的xpath從下拉菜單中選擇一個選項。對於所提供的網頁,會是這個樣子:
#import functions from selenium module
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# open chrome browser using webdriver
path_to_chromedriver = '/Users/Michael/Downloads/chromedriver'
browser = webdriver.Chrome(executable_path=path_to_chromedriver)
# open web page using browser
browser.get('http://kllads.kar.nic.in/MLAWise_reports.aspx')
# wait for page to load then find 'Constituency Name' dropdown and select 'Aland (46)''
const_name = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="ddlconstname"]')))
browser.find_element_by_xpath('//*[@id="ddlconstname"]/option[2]').click()
# wait for the page to load then find 'Select Status' dropdown and select 'OnGoing'
sel_status = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="ddlstatus1"]')))
browser.find_element_by_xpath('//*[@id="ddlstatus1"]/option[2]').click()
# wait for browser to load then click 'Generate Report'
gen_report = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="BtnReport"]')))
browser.find_element_by_xpath('//*[@id="BtnReport"]').click()
每個之間的互動,你只是給瀏覽器一段時間嘗試點擊下一個元素之前加載。一旦填寫完所有表格,頁面將顯示基於所選選項的數據,並且您應該能夠刪除表格數據。在嘗試爲第一個選區名稱選項加載數據時,我遇到了一些問題,但其他人似乎工作正常。
你也應該能夠遍歷所有的每個網頁的形式下可顯示所有數據的下拉選項。
希望有幫助!
相關問題
- 1. 我該如何刮這個框架?
- 2. 我該如何刮這個特殊的jQuery網站與python?
- 3. 我該如何group_concat這個?
- 4. 我該如何改進這段代碼(用Python進行刮擦)?
- 5. 簡單的網頁刮板格式化,我該如何解決這個問題?
- 6. 如何刮這個網頁與R
- 7. 如何刮這個squawka頁面?
- 8. 我該如何用rvest和R刮一個CGI-Bin?
- 9. 我該如何定義這個?
- 10. 我該如何解決這個問題?
- 11. 我該如何調用這個函數?
- 12. 我該如何縮短這個時間?
- 13. 我該如何替換這個Singleton?
- 14. 我該如何實現這個代碼?
- 15. 我該如何解決這個錯誤?
- 16. 我該如何做這個動畫?
- 17. 我該如何改進這個書籤?
- 18. 我該如何解決這個問題?
- 19. 我該如何做這個SQL查詢?
- 20. 我該如何解決這個錯誤?
- 21. 我該如何解決這個RelativeLayout?
- 22. 我該如何重構這個JS?
- 23. 我該如何漂浮這個左邊?
- 24. 導軌3:我該如何幹這個?
- 25. 我該如何做這個hibernate映射?
- 26. 我應該如何解析這個JSON?
- 27. 我該如何殺死這個過程?
- 28. 我該如何使這個RewriteRule工作?
- 29. 我該如何解決這個問題
- 30. 我該如何擺脫這個特徵?
一個選項是使用scrapy [鏈接](http://doc.scrapy.org/)。爲了使表單提交[鏈接](http://doc.scrapy.org/en/latest/topics/request-response.html)可以被引用。 – Kadir
請閱讀指南[我如何提出一個好問題](http://stackoverflow.com/help/how-to-ask),特別是關於最小,完整和可驗證示例(MCVE)的部分。這將幫助你爲自己解決問題。如果你這樣做,仍然卡住,你可以回來發佈你的MCVE,你試過的,以及結果是什麼,所以我們可以更好地幫助你。 – JeffC