python selenium按类查找元素返回整个网站而不是元素

时间:2017-02-05 08:01:28

标签: python selenium

我正在尝试使用selenium将此网站中的表格读取为pandas数据帧。 Link here

但是,当我尝试打印Dataframe时,它会向我提供网站上的所有内容,例如website searchadvance search等顶部,以及底部{ {1}}和Disclaimer | Hyperlink Policy | Privacy Policy

而不仅仅是表格。不知道这里有什么问题。

©2010 Hong Kong Exchanges and Clearing Limited...

注意:我也尝试过以下代码,但结果仍然相同。

url = r'https://www.hkex.com.hk/eng/market/sec_tradinfo/stockcode/eisdeqty.htm'


path_to_chrome_driver = r'C:\chromedriver.exe'
driver = webdriver.Chrome(executable_path=path_to_chrome_driver)
driver.get(url)
driver.find_element_by_class_name('table_grey_border').find_element_by_tag_name('tbody')
z = pandas.read_html(driver.page_source, flavor='bs4')

print(z)

2 个答案:

答案 0 :(得分:0)

由于您未使用find_element_by_class_name中的返回值,您将看不到这些结果,因此您需要使用find_element_by_class_name的返回值。

实际上你使用了driver.page_source这是整个html。

改变这个:

driver.find_element_by_class_name('table_grey_border').find_element_by_tag_name('tbody')
z = pandas.read_html(driver.page_source, flavor='bs4')

对此:

res = driver.find_element_by_class_name('table_grey_border').find_element_by_tag_name('tbody')
print (res)

答案 1 :(得分:0)

如果您只需要HTML代码作为特定元素,则需要使用以下代码:

driver.find_element_by_class_name('table_grey_border').find_element_by_tag_name('tbody').get_attribute('outerHTML')