簡體   English   中英

如何使用python硒獲取網頁上所有形式的按鈕?

[英]How to get buttons of all forms on webpage using python selenium?

我在這里問之前已經搜索了答案,但還不夠幸運。 因此,我正在使用python硒進行Web抓取。 在選擇硒之前,我檢查了機械化程度,是否刮擦,但是我沒有對它們執行一些按鈕單擊操作,然后檢查了硒,但存在一些弊端。 我之所以這么說是因為,如果我選擇了錯誤的工具,請在為時已晚之前糾正我。

我對硒的問題是如何使用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() 

您可以使用以下代碼通過xpath獲取表單按鈕:

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

並通過簡單的for循環對其進行迭代:

for button in buttons:
    button.click() 

或者,您可以使用find_elements_by_css_selector函數獲取元素:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM