使用python selenium获取网站表数据时出错 - 多个表并且无法找到元素

时间:2018-03-04 23:47:32

标签: html python-3.x selenium-chromedriver

我正试图从巴西股票市场获得信息(BMF BOVESPA)。该网站有几个表,但我的代码无法获取它们。

以下代码旨在从“AçõesmcirculaçãonoMercado”表中获取所有数据 - >来自网页的最后一个表格。

我已尝试过以下内容,但没有一个适合我:

content = browser.find_element_by_css_selector('// div [@ id =“div1”]')

table = browser.find_element_by_xpath(('// * [@ id =“div1”] / div / div / div 1 / table / tbody'))

提前感谢您提出我的问题。

from selenium import webdriver
from time import sleep

url = "http://bvmf.bmfbovespa.com.br/cias-Listadas/Empresas-
Listadas/ResumoEmpresaPrincipal.aspx?codigoCvm=19348&idioma=pt-br"
browser = webdriver.Chrome()
browser.get(url)
sleep(5) #wait website to reload
content = browser.find_element_by_css_selector('//div[@id="div1"]')

HTML可以在附图中找到

HTML

另外,下面的代码到达同一个网站

url = "http://bvmf.bmfbovespa.com.br/cias-Listadas/Empresas-Listadas/BuscaEmpresaListada.aspx?idioma=pt-br"
Ticker='ITUB4'
browser = webdriver.Chrome()
browser.get(url)
sleep(2)
browser.find_element_by_xpath(('//*[@id="ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_txtNomeEmpresa_txtNomeEmpresa_text"]')).send_keys(Ticker)
browser.find_element_by_xpath(('//*[@id="ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnBuscar"]')).click();
content = browser.find_element_by_id('div1')

1 个答案:

答案 0 :(得分:1)

Selenium with Python documentation UnOfficial

Hii那里

Selenium提供了以下方法来定位页面中的元素:

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

为什么你的代码不起作用?因为您没有使用正确的正确代码来定位元素

你在css选择器中使用xpath

content = browser.find_element_by_css_selector('//div[@id="div1"]') #this part is wrong

如果你想选择div1

,你可以这样做
content = browser.find_element_by_id('div1')

这里是正确的代码

url = "http://bvmf.bmfbovespa.com.br/cias-Listadas/Empresas-

Listadas/BuscaEmpresaListada.aspx?idioma=pt-br"
Ticker='ITUB4'
browser = webdriver.Chrome()
browser.get(url)
sleep(2)
browser.find_element_by_xpath(('//*[@id="ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_txtNomeEmpresa_txtNomeEmpresa_text"]')).send_keys(Ticker)
browser.find_element_by_xpath(('//*[@id="ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnBuscar"]')).click()

我测试了它并且有效:)

如果我帮助你,请将其标记为最佳答案:)