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