簡體   English   中英

使用python硒獲取網站表數據時出錯-多個表且無法找到元素

[英]Error when getting website table data using python selenium - Multiple tables and Unable to locate element

我正在嘗試從巴西股票市場(BMF BOVESPA)獲取信息。 該網站有幾個表,但是我的代碼無法獲取它們。

下面的代碼旨在從表“AçõesemCirculaçãono Mercado”中獲取所有數據->該網頁中的最后一個表。

我嘗試了以下方法,但沒有一個適合我:

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

表= 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')

Selenium與Python文檔非官方

那里的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()

我測試了它,它起作用了:)

如果我幫助過您,請將其標記為最佳答案:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM