2015-10-07 5 views
-1

Мне нужно очистить эту страницу (которая имеет форму): http://kllads.kar.nic.in/MLAWise_reports.aspx, с Python предпочтительно (если не Python, а затем JavaScript). Я смотрел на библиотеки вроде RoboBrowser (это в основном Mechanize + BeautifulSoup) и (возможно) Selenium, но я не совсем уверен, как это сделать. Из проверки элемента, кажется, WebForm, который мне нужно заполнить. После заполнения этого веб-страницы генерируются некоторые данные, которые мне нужно сохранить. Как мне это сделать?Как я могу это очистить?

+2

Один вариант - использование scrapy [link] (http://doc.scrapy.org/). Для создания ссылок на материалы [link] (http://doc.scrapy.org/en/latest/topics/request-response.html) можно ссылаться. – Kadir

+0

Пожалуйста, прочитайте руководство [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask), особенно часть на примере Minimal, Complete и Verifiable (MCVE). Это поможет вам решить проблемы для себя. Если вы сделаете это и все еще застряли, вы можете вернуться и опубликовать свой MCVE, что вы пробовали, и каковы результаты, чтобы мы могли лучше вам помочь. – JeffC

ответ

1

Вы можете легко взаимодействовать с веб-формами 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() 

между каждым взаимодействием, вы просто дать браузеру некоторое время для загрузки, прежде чем нажать на следующий элемент. После заполнения всех форм страница отобразит данные на основе выбранных опций, и вы сможете очистить данные таблицы. У меня возникло несколько проблем при попытке загрузить данные для первого параметра «Название избирателя», но другие, похоже, работали нормально.

Вы также можете просмотреть все раскрывающиеся варианты, доступные в каждой веб-форме, для отображения всех данных.

Надеюсь, что это поможет!

+0

Спасибо! Будет ли Selenium открывать окно при вызове browser.get (url)? Мне просто интересно. – Mathguy

+0

Да, будет. Однако есть несколько способов обойти это, если вы хотите скрыть браузер, как только у вас все будет правильно. Один из вариантов заключается в использовании безгласного webdriver, такого как PhantomJS. Я также прочитал о том, как настроить виртуальный дисплей для работы webdriver с использованием модуля виртуального отображения. Подробнее об этом и других вариантах можно найти здесь: . –

+0

Отлично! Благодаря! – Mathguy

Смежные вопросы