使用 Selenium 循环浏览网页的 <a> 标签

我正在使用 Selenium 使用 Python 构建一个网络爬虫。这是我正在从中抓取数据的网页:

正如您所看到的,当我们单击标有数字的按钮时,该页面内的表格会发生变化。该页面是巴西基金报告。“Anterior” 的意思是“前一个”,“seguinte” 的意思是“下一个”。我想遍历所有这些数字,但我尝试过的方法都不起作用。我正在尝试使用 Selenium 的方法单击标识<a>按钮的标签。Seguinteclick()

我尝试过的

browser = Firefox()


button = browser.find_element_by_id('tblDocumentosEnviados_next')

while button.is_enabled(): 

               

    page = browser.find_element_by_xpath('//a[contains(@class, "paginate_button current")]').text

    print(page)

    button = browser.find_element_by_id('tblDocumentosEnviados_next')

    time.sleep(3)

    button.click()


我如何迭代这些数字?


翻阅古今
浏览 175回答 3
3回答

跃然一笑

我分析了网站发出的请求,发现您可以通过一个请求获取所有数据,即 json 内容:import requests as rfrom bs4 import BeautifulSoupimport jsonurl = "https://fnet.bmfbovespa.com.br/fnet/publico/abrirGerenciadorDocumentosCVM?cnpjFundo=11026627000138&idCategoriaDocumento=6&idTipoDocumento=45"res = r.get("http://fnet.bmfbovespa.com.br/fnet/publico/pesquisarGerenciadorDocumentosDados?d=0&s=0&l=200&"+url.split("?")[1])json_result = json.loads(res.text)print(json_result)注意:如果“recordsTotal”超过200,则需要再次请求,参数为“?d=0&s=200&l=200”,s代表start,l代表limit,始终保持200以一次抓取最大值要求。

鸿蒙传说

正如你所看到的,两个按钮之间的区别只是按钮的数量//*[@id="tblDocumentosEnviados_paginate"]/span/a[1]//*[@id="tblDocumentosEnviados_paginate"]/span/a[2]如果你想迭代它,你可以简单地更改 xpath 中的数字例如&nbsp;for i in range(1, numberOfPages):browser.find_element_by_xpath("//[@id="tblDocumentosEnviados_paginate"]/span/a["+str(i)+"]")希望这能解决您想要做的事情

哆啦的时光机

正如你所看到的,两个按钮之间的区别只是按钮的数量//*[@id="tblDocumentosEnviados_paginate"]/span/a[1]//*[@id="tblDocumentosEnviados_paginate"]/span/a[2]如果你想迭代它,你可以简单地更改 xpath 中的数字例如&nbsp;for i in range(1, numberOfPages):browser.find_element_by_xpath("//[@id="tblDocumentosEnviados_paginate"]/span/a["+str(i)+"]")希望这能解决您想要做的事情
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python