Как очистить комментарии с помощью Selenium и Python?

Я хочу извлечь «комментарий» с веб-сайта. Я уже пытался использовать селен и извлечь его с помощью xpath, но это не работает.

from selenium import webdriver
import pandas as pd
            
driver = webdriver.Chrome()
driver.get('https://finance.detik.com/berita-ekonomi-bisnis/d-5307853/ri-disebut-punya-risiko-korupsi-yang-tinggi?_ga=2.13736693.357978333.1608782559-293324864.1608782559')
            
userid_element = driver.find_elements_by_xpath('//*[@id = "cmt66364625"]/div[1]/div[1]/text()')[0]
userid = userid_element.text

Это результат:


IndexError                                Traceback (most recent call last)
<ipython-input-73-151acf07e320> in <module>
----> 1 userid_element = driver.find_elements_by_xpath('//*[@id = "cmt66364625"]/div[1]/div[1]/text()')[0]
      2 userid = userid_element.text

IndexError: list index out of range

я пытался удалить индекс списка

userid_element = driver.find_elements_by_xpath('//*[@id = "cmt66364625"]/div[1]/div[1]/text()')
userid = userid_element.text

но результат таков:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-74-890ba28d7494> in <module>
      1 userid_element = driver.find_elements_by_xpath('//*[@id = "cmt66364625"]/div[1]/div[1]/text()')
----> 2 userid = userid_element.text

AttributeError: 'list' object has no attribute 'text'
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
696
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

userid = [i.text for i in userid_element]
print(userid)

Find_elemnts возвращает список, который вы должны пройти по каждому элементу. Вы можете использовать приведенный выше код для итерации и получения текста из каждого элемента и сохранения его в виде массива.

если вы хотите, чтобы все комментарии, вы можете сделать это

comment_elements = driver.find_elements_by_xpath("//div[@class='comment__cmt_box_text___3bK3O comment__cmt_dk_komen___1Yzyg']")
comments = [comment.text for comment in comment_elements]
Ответ принят как подходящий

Чтобы очистить комментарии с веб-сайта , так как комментарии находятся внутри <iframe>, вам необходимо:

  • Вызовите WebDriverWait, чтобы нужный кадр стал доступен, и переключитесь на него.

  • Вызовите WebDriverWait для желаемого visible_of_all_elements_located().

  • Вы можете использовать любую из следующих стратегий поиска:

    • Использование CSS_SELECTOR:

      driver.get('https://finance.detik.com/berita-ekonomi-bisnis/d-5307853/ri-disebut-punya-risiko-korupsi-yang-tinggi?_ga=2.13736693.357978333.1608782559-293324864.1608782559')
      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.xcomponent-component-frame.xcomponent-visible")))
      print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div[class^='comment__cmt_'][style]")))])
      
    • Использование XPATH:

      driver.get('https://finance.detik.com/berita-ekonomi-bisnis/d-5307853/ri-disebut-punya-risiko-korupsi-yang-tinggi?_ga=2.13736693.357978333.1608782559-293324864.1608782559')
      WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='xcomponent-component-frame xcomponent-visible']")))
      print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[starts-with(@class, 'comment__cmt_')][@style]")))])
      
  • Примечание. Вы должны добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Выход консоли:

    ['buzzer pada kmenaa..giliran muhammdiyah ampe 400an komen..dapseeee\nLaporkan\n0BalasBagikan:  ', 'selama korupsi tidak dihukum mati disanalah korupsi masih liar dan ada kalaupun dibuat hukum mati setidaknya bisa mengurangi angka korupsi itu\nLaporkan\n2BalasBagikan:  ', 'kalo terindikasi korupsi, lalu teriak saya pancasila, biar pd takut\nLaporkan\n0BalasBagikan:  ', '1. Hukuman fisik diperberat. Hukuman sosial diadakan.\nLaporkan\n0BalasBagikan:  ', 'Padahal fokus tegakan hukum dan berantas korupsi otomatis ekonomi terangkat. Hukum tegak ekonomi kuat. Bayangkan setingkat RT aja korupsi. Dan herannya koruptor serasa lebih dihormatin dari pelaku kejahatan lain.\nLaporkan\n0BalasBagikan:  ', 'Bikin UU cashless aja Bu. Transaksi cash maks 1jt. Jadi lebih enak ditracing\nLaporkan\n0BalasBagikan:  ', 'Hukum terlalu lemah, yang pernah korupsi malah masih menjabat pemerintahaan dan malah masih mencalonkan diri sebagai bupati atau walikota dan gubernur setelah melakukan korupsi.\nLaporkan\n0BalasBagikan:  ', 'system birokrasi yg lemah, seharusnya mulai mengandalkan teknologi kontrol online untuk mengurangi kesempatan pejabat yg korupsi\nLaporkan\n0BalasBagikan:  ', 'Bukan cuma resiko, emang udah kejadian kaleeee hahahhahahaha\nLaporkan\n0BalasBagikan:  ', 'ga heran jamannya new orba\nLaporkan\n1BalasBagikan:  ']  
    

Ссылка

Вы можете найти пару соответствующих обсуждений в:

Другие вопросы по теме