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()
我試過,已經不適合我了。編輯代碼添加我的腳本它給出錯誤 按鈕按鈕: TypeError:'WebElement'對象不可迭代 – StackUP
@StackUP是否需要使用xpath? –
對不起,可能是我沒有給你。我們有另一種方式來獲取每個表單上的提交按鈕嗎? – StackUP