Проблема с очисткой таблицы с использованием Xpath и Selenium - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужно удалить значения, помеченные желтым на прикрепленном рисунке. Я пытался удалить одну ячейку таблицы, используя: 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 таблицы

Есть ли у вас какие-либо идеи, как удалить эту вещь ? Спасибо за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 14 апреля 2020

Вы можете использовать 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

0 голосов
/ 14 апреля 2020

Я бы предложил использовать pandas до read_html() и загрузить в DataFrame, а затем импортировать в csv .

Если у вас нет pandas. Очень простой шаг для установки.

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

0 голосов
/ 14 апреля 2020

Таблица рекомендаций id не существует в указанной вами ссылке. Вы пытались получить таблицу, передав имя класса в 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')])
...