我有这个URL,其中有表格。我需要从所有多个页面的表中获取所有行和列数据。我无法理解如何从表中获取数据。下面是我的代码:
from selenium import webdriver
import os
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import Select
from pynput.keyboard import Key, Controller
curr_path = os.path.dirname(os.path.abspath(__file__))
keyboard = Controller()
driver = webdriver.Firefox()
driver.get("http://silk.dephut.go.id/index.php/info/iuiphhk")
driver.maximize_window()
Run Code Online (Sandbox Code Playgroud)
上面的代码打开一个 Firefox 并加载 url。我用来点击下一页的以下代码:
next_btn = (By.XPATH, "//div[@id='silk_content_wrapper']//ul[1]//li[4]//a[1]")
WebDriverWait(driver, 30).until(ec.element_to_be_clickable(next_btn)).click()
Run Code Online (Sandbox Code Playgroud)
但我无法理解如何从表中获取数据。我不是来自网络开发领域,所以无法理解网站代码。我参考了这个问题接受的答案,并提取了表的ID:
table_id = driver.find_element(By.ID, 'diviuiphhk')
Run Code Online (Sandbox Code Playgroud)
但我没有找到行的ID来获取值。要查找 url 上任何对象的 ID、XPATH,我使用chropath。任何人都可以帮助我了解如何从表中获取数据。请帮忙。谢谢
我能够解决它。下面是代码:
table_id = driver.find_element(By.XPATH, "//table[@class='table']")
for row in range(1, 11):
rows = table_id.find_elements(By.XPATH, "//body//tbody//tr[" + str(row) + "]")
for row_data in rows:
col = row_data.find_elements(By.TAG_NAME, "td")
for i in range(len(col)):
print(col[i].text)
Run Code Online (Sandbox Code Playgroud)
首先,我使用 chropath 获取表的 XPATH 值。然后我还得到了row的XPATH。该行的 XPATH 对于表中的所有行都是相同的,只需将数字从 1 增加到 10。行内的列由 TAG tdNAME 引用。因此使用这个标签名称来获取列的值。
谢谢
| 归档时间: |
|
| 查看次数: |
7596 次 |
| 最近记录: |