我正在尝试使用selenium从下面的网络链接中刮取表格。但是,pandas似乎只返回第一个表,而不是所有表。
weblink = 'http://sgx.com/wps/portal/sgxweb/home/company_disclosure/stockfacts?page=2&code=A68U&lang=en-us'
path_to_chromedriver = r'C:\chromedriver.exe'
driver = webdriver.Chrome(executable_path=path_to_chromedriver)
driver.get(weblink)
wait = WebDriverWait(driver, 8)
# locate and switch to the iframe
iframe = driver.find_element_by_css_selector("#mainContent iframe")
driver.switch_to.frame(iframe)
wait.until(EC.visibility_of_element_located((By.ID, 'financials'))) # Should I be using this?
print(pandas.read_html(driver.page_source, flavor='bs4'))
如何让pandas打印出所有表而不是第一张?
答案 0 :(得分:1)
您是否查看了返回的TABLE
的内容?它实际上包含所有5个“表”。在页面上看起来像单独的TABLE
标签实际上只有一个和TBODY
的格式看起来像单独的TABLE
。您应该熟悉浏览器的开发控制台。我会推荐Chrome的。右键单击表格内的元素,然后从上下文菜单中选择“检查”。现在将鼠标悬停在开发控制台中的元素上,浏览器将突出显示网页上的元素。这是将HTML中的元素与页面上的元素相关联的好方法。如果您在此页面上执行此操作,则会看到只有一个TABLE
代码,而每个TBODY
看起来都是单独的TABLE
。