【发布时间】:2016-06-19 00:32:06
【问题描述】:
我在这里提问之前搜索了答案,但没有足够幸运。所以在这里,我正在使用 python selenium 进行网络抓取。在选择 selenium 之前,我检查了 mechanize,scrapy,但我没有用它们执行一些按钮点击然后我检查了 selenium,它似乎有一些缺点。我之所以这么说是因为如果我选择了错误的工具,请在为时已晚之前纠正我。
我关于 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()
【问题讨论】:
标签: python selenium web-scraping mechanize