2016-03-05 84 views
1

我在尋求答案之前問這裏,但沒有得到足夠的幸運。所以在這裏,我正在使用python selenium進行網絡抓取。在選擇硒之前,我檢查了機械化,scrapy,但我沒有執行一些按鈕點擊與他們,然後我檢查硒似乎沒有一些缺點。我說的都是這個,因爲如果我選擇了錯誤的工具,那麼請在我來不及之前糾正我。如何使用python selenium獲取網頁上的所有表單?

我對硒的問題是如何使用xpath獲取網頁上的所有元素。例如:在網頁上的每個網頁我有10個表格,每個表格都有一個按鈕。所以我想讓網頁上的所有表單循環播放,然後單擊按鈕。

如:

<form id="#F0"> 
    <input type="button" name="itens" value="Items" class="texField2" onClick="somefunction()"/> 
</form> 
<form id="#F0"> 
    <input type="button" name="itens" value="Items" class="texField2" onClick="somefunction()"/> 
</form> 
<form id="#F1"> 
    <input type="button" name="itens" value="Items" class="texField2" onClick="somefunction()"/> 
</form> 
<form id="#F2"> 
    <input type="button" name="itens" value="Items" class="texField2" onClick="somefunction()"/> 
</form> 
<form id="#F3"> 
    <input type="button" name="itens" value="Items" class="texField2" onClick="somefunction()"/> 
</form> 
<form id="#F4"> 
    <input type="button" name="itens" value="Items" class="texField2" onClick="somefunction()"/> 
</form> 

另一件事,我在做什麼是我點擊第一個窗體上按鈕(帶我到另一個網頁,我回去的歷史和點擊第二個按鈕,然後回去歷史等),似乎刮刮會很慢。有沒有更好的方法來做同樣的事情?

謝謝!

編輯:

from selenium import webdriver 
mydriver = webdriver.Firefox() 

baseurl = """http://www.comprasnet.gov.br/consultalicitacoes/ConsLicitacao_Filtro.asp?numprp=&dt_publ_ini=24/02/2016&dt_publ_fim=10/03/2016&chkModalidade=1,2,3,20,5,99&chk_concor=31,32,41,42&chk_pregao=1,2,3,4&chk_rdc=1,2,3,4&optTpPesqMat=M&optTpPesqServ=S&chkTodos=-1&chk_concorTodos=-1&chk_pregaoTodos=-1&txtlstUf=&txtlstMunicipio=&txtlstUasg=&txtlstGrpMaterial=&txtlstClasMaterial=&txtlstMaterial=&txtlstGrpServico=&txtlstServico=&txtObjeto=""" 
mydriver.get(baseurl) 
mydriver.find_element_by_id('ok').click() 
buttons = mydriver.find_element_by_xpath("//form//input[@type='button']") 
for button in buttons: 
    button.click() 

回答

3

您可以通過XPath的獲取形式的按鈕與下面的代碼:

buttons = driver.find_elements_by_xpath(".//form//input[@type='button']") 

,並通過簡單的重複他們的for循環:

for button in buttons: 
    button.click() 

Alternativelly可以使用find_elements_by_css_selector功能獲取元素:

buttons = driver.find_elements_by_css_selector("input[type='button']") 
+0

我試過,已經不適合我了。編輯代碼添加我的腳本它給出錯誤 按鈕按鈕: TypeError:'WebElement'對象不可迭代 – StackUP

+0

@StackUP是否需要使用xpath? –

+0

對不起,可能是我沒有給你。我們有另一種方式來獲取每個表單上的提交按鈕嗎? – StackUP

相關問題