Мне нужно очистить эту страницу (которая имеет форму): http://kllads.kar.nic.in/MLAWise_reports.aspx, с Python предпочтительно (если не Python, а затем JavaScript). Я смотрел на библиотеки вроде RoboBrowser (это в основном Mechanize + BeautifulSoup) и (возможно) Selenium, но я не совсем уверен, как это сделать. Из проверки элемента, кажется, WebForm, который мне нужно заполнить. После заполнения этого веб-страницы генерируются некоторые данные, которые мне нужно сохранить. Как мне это сделать?Как я могу это очистить?
ответ
Вы можете легко взаимодействовать с веб-формами javascript относительно в Selenium. Вам может потребоваться установить 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()
между каждым взаимодействием, вы просто дать браузеру некоторое время для загрузки, прежде чем нажать на следующий элемент. После заполнения всех форм страница отобразит данные на основе выбранных опций, и вы сможете очистить данные таблицы. У меня возникло несколько проблем при попытке загрузить данные для первого параметра «Название избирателя», но другие, похоже, работали нормально.
Вы также можете просмотреть все раскрывающиеся варианты, доступные в каждой веб-форме, для отображения всех данных.
Надеюсь, что это поможет!
Спасибо! Будет ли Selenium открывать окно при вызове browser.get (url)? Мне просто интересно. – Mathguy
Да, будет. Однако есть несколько способов обойти это, если вы хотите скрыть браузер, как только у вас все будет правильно. Один из вариантов заключается в использовании безгласного webdriver, такого как PhantomJS. Я также прочитал о том, как настроить виртуальный дисплей для работы webdriver с использованием модуля виртуального отображения. Подробнее об этом и других вариантах можно найти здесь:
Отлично! Благодаря! – Mathguy
- 1. C# checkboxes - Могу ли я это очистить?
- 2. Как я могу очистить груз?
- 3. Как я могу очистить это уродливое утверждение if?
- 4. Как я могу очистить буфер, чтобы это сработало?
- 5. org.json.JSONException, как я могу это очистить, используя библиотеку волейбола
- 6. Как я могу очистить UISession?
- 7. Как я могу очистить QLocalSocket?
- 8. Как я могу очистить QFormLayout?
- 9. Как я могу очистить переменную?
- 10. Как я могу очистить чертеж?
- 11. Как я могу «очистить» virtualenv?
- 12. Могу ли я очистить вспышку?
- 13. Как я могу очистить этот кадр?
- 14. Как я могу очистить очередь MassTransit?
- 15. Как я могу очистить содержимое файла
- 16. Как я могу очистить маршруты администратора Symfony?
- 17. Как я могу очистить кеш-память JQuery?
- 18. Как я могу очистить концепцию инкапсулирования данных?
- 19. Как я могу очистить состояние в React.js?
- 20. Как я могу очистить вручную созданные файлы
- 21. Как я могу очистить маршруты на google.map?
- 22. Как я могу очистить содержимое NSMutableAttributedString?
- 23. Как я могу очистить консоль Google Chrome
- 24. Как я могу очистить этот код jQuery?
- 25. Hudson - Как я могу «очистить SVN»?
- 26. Как я могу вручную очистить журнал повышения?
- 27. Как я могу очистить все сеансы рельсов?
- 28. Как я могу заставить Maven очистить?
- 29. Я не могу очистить массив
- 30. Как я могу очистить кеш отражения .NET?
Один вариант - использование scrapy [link] (http://doc.scrapy.org/). Для создания ссылок на материалы [link] (http://doc.scrapy.org/en/latest/topics/request-response.html) можно ссылаться. – Kadir
Пожалуйста, прочитайте руководство [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), особенно часть на примере Minimal, Complete и Verifiable (MCVE). Это поможет вам решить проблемы для себя. Если вы сделаете это и все еще застряли, вы можете вернуться и опубликовать свой MCVE, что вы пробовали, и каковы результаты, чтобы мы могли лучше вам помочь. – JeffC