如何抓取特定网站的一些评论? (我遇到了挑战。)

问题描述 投票:0回答:1

我是爬行的初学者,学习时遇到了一个难题。

[无论如何,我尝试在网络新闻中抓取评论,但失败了。

这是我在python中使用硒的代码。


from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


driver = webdriver.Chrome('./chromedriver')

url = 'https://www.etnews.com/20200228000119?mc=em_101_00001'

driver.get(url)

try:
    element = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#list > div:nth-child(3) > div.reply-bottom > div.reply-content-wrapper > div.reply-content > p')))

    comment_list = driver.find_element_by_css_selector('#list > div:nth-child(3) > div.reply-bottom > div.reply-content-wrapper > div.reply-content > p')
except:
    print('Timeout')

print(comment_list.text) 

driver.quit()

我认为chromedriver似乎未检测到css_selector,因为输出消息始终为'Timeout'。

我不知道为什么硒不能破坏作为普通网站(https://www.etnews.com/)之一的网站中的注释。

我想知道原因。请给我很大的帮助。

(附言。我知道HTML,CSS有点不懂Javascript)

python selenium selenium-chromedriver webdriverwait
1个回答
0
投票

您正在查看的页面具有iframe。评论在里面。

为了收集评论,您需要先切换到iframe,然后才能访问iframe中的元素(在这种情况下为评论)。我修改了脚本来执行此操作,请尝试:

driver = webdriver.Chrome('./chromedriver')
url = 'https://www.etnews.com/20200228000119?mc=em_101_00001'

driver.get(url)
driver.implicitly_wait(5)

# Switch to iframe
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[@title='livere']"))
# Search for comment
comment = driver.find_element_by_css_selector('#list > div:nth-child(3) > div.reply-bottom > div.reply-content-wrapper > div.reply-content > p')
print(comment.text)

driver.quit()

我希望这会有所帮助,祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.