使用Xpath和Selenium删除表时出现问题

2024-04-16 12:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要刮除附件中标记为黄色的值。 我试图使用:driver.find_element_by_xpath(/html/body/div[4]/div/div[2]/div[2]/div[2]/div[2]/div[5]/div[5]/div[2]/table/tbody/tr[1]/td[2])刮取单个表单元格

它不起作用。我也尝试使用以下代码:

table = driver.find_elements_by_id("recommendationTable")
    with open('scraper.csv', 'w', newline='') as csvfile:
        wr = csv.writer(csvfile)
        for row in table.find_elements_by_css_selector('tr'):
            wr.writerow([d.text for d in row.find_elements_by_css_selector('td')])

它也不起作用。 在图片上还有这个表格HTML。 我想刮取这些黄色值,并将它们保存在Excel列中

HTML of table

你知道怎么刮这东西吗? 谢谢你的帮助


Tags: csvcsvfileindivforbydrivertable
3条回答

您提供的链接中不存在id recommendationTable。 您是否尝试通过将类名传递给xpath来获取表

 table = driver.find_element_by_xpath("//table[@class='marketInfo']")
 with open('scraper.csv', 'w', newline='') as csvfile:
    wr = csv.writer(csvfile)
    for row in table.find_elements_by_xpath('.//tbody/tr'):
        wr.writerow([d.text for d in row.find_elements_by_xpath('.//td')])

您可以使用xpath处理第一行:

driver.get('https://www.bankier.pl/inwestowanie/profile/quote.html?symbol=CCC')
driver.maximize_window()

tabel = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, "//table[@class='marketInfo']//tbody//tr[1]")))

print tabel.text

输出:

enter image description here

我建议使用pandasread_html()并加载到DataFrame,然后导入到csv

如果你没有熊猫。非常简单的安装步骤

pip install pandas

代码

import pandas as pd
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 import webdriver

driver=webdriver.Firefox(executable_path="path\to\gecodriver")
driver.get("https://www.bankier.pl/inwestowanie/profile/quote.html?symbol=CCC")
table=WebDriverWait(driver,15).until(EC.visibility_of_element_located((By.CSS_SELECTOR,".marketInfo"))).get_attribute("outerHTML")
df=pd.read_html(str(table))[0]
df.to_csv("scraper.csv",index=False)

生成后的Csv文件

enter image description here

相关问题 更多 >