我正在尝试从这个网站上删除一张桌子作为练习 - https://stats.paj.gr.jp/en/pub/current_en_n2.html
这里的问题是,我无法打印完整的表格。这仅从表中返回 1 个单元格。感谢任何好心人可以提供一些指导。
我的代码如下
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import pandas as pd
path = "C:\\Users\Jun Hui\\Desktop\\Quant Trading\\chromedriver-win32\\chromedriver.exe"
service = webdriver.chrome.service.Service(path)
service.start()
url = "https://stats.paj.gr.jp/en/pub/current_en_n2.html"
driver = webdriver.Chrome(service=service)
driver.get(url)
link_element1 = driver.find_element(By.XPATH,"//a[@href='index.html']")
link_element1.click()
link_element2 = driver.find_element(By.XPATH,"//a[@href='./current_en_n2.html']")
link_element2.click()
page_source = driver.page_source
soup = BeautifulSoup(page_source, "html.parser")
table = soup.find("table")
rows = table.find_all("tr")
for row in rows:
cells = row.find_all("td")
for cell in cells:
print(cell.text.strip(), end="\t")
print()
有时,当您请求页面信息时,表格尚未加载。您应该使用等待策略来尽量减少这种情况的发生
例如,您检查表格元素的可见性(意味着表格存在),然后对于该表格元素,您找到带有标签 tr 的元素,它应该返回表格行元素的列表。然后循环遍历并从中提取您需要的信息
table = wait.Until(ExpectedConditions.ElementIsVisible(By.ClassName("table-class-name")));
table_rows = Table.findElements(By.tagName("tr"))
for row in table_rows:
#loop through table row to extract data
只是为了了解如何实施它的粗略想法