2016-03-05 71 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

相关问题