爬取评论发现输出的很多是重复的,怎么办?如何保证能可以加载每一页的评论,如何修改内容:如果输出的评论重复,可能是因为页面加载速度较慢,导致获取到的页面源码没有更新。可以尝试加入一些等待时间,等待页面加载完成后再进行下一步操作。

另外,你可以尝试通过修改代码来加载每一页的评论。可以参考以下步骤:

  1. 获取当前页的所有评论:

    • 使用XPath表达式定位到评论的div元素,然后依次提取每个div元素中的内容和时间。
    • 将提取到的内容和时间添加到Excel表格中。
  2. 点击下一页按钮:

    • 使用find_element()方法定位到下一页按钮的元素。
    • 使用execute_script()方法执行JavaScript代码来点击按钮,模拟用户点击操作。
  3. 等待页面加载完成:

    • 使用WebDriverWait()方法等待页面加载完成,直到下一页按钮可点击。
  4. 重复步骤1-3,直到获取到所有评论。

下面是修改后的代码示例:

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

# 创建浏览器对象
options = webdriver.FirefoxOptions()
#浏览器地址
options.binary_location = r'C:\Users\yuxin\AppData\Local\Mozilla Firefox\firefox.exe'
# options.add_argument('--headless')
# options.add_argument('--diable-gpu')
browser = webdriver.Firefox(options=options)

# 打开网站
browser.get('https://you.ctrip.com/sight/dayi3130/71986.html#ctm_ref=www_hp_his_lst')

wb = Workbook()
sheet = wb.active
sheet['A1'] = '内容'
sheet['B1'] = '时间'

page_num = 1
while True:
    # 等待下一页按钮可点击
    next_button = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.ant-pagination-next > span:nth-child(1)'))) 

    # 获取当前页的所有评论
    comments = browser.find_elements(By.XPATH, '/html/body/div[2]/div[2]/div/div[3]/div/div[4]/div[1]/div[4]/div/div[5]/div')
    for comment in comments:
        content = comment.xpath('.//div[@class="commentDetail"]/text()')[0]
        contenttime = comment.xpath('.//div[@class="commentTime"]/text()')[0]
        sheet.append([content, contenttime])

    # 保存数据
    wb.save('./jc6301.xlsx')

    # 点击下一页按钮
    browser.execute_script('arguments[0].click();', next_button)

    page_num += 1
    if page_num > 215:
        break

# 关闭浏览器
browser.quit()

这样修改后,可以保证每一页的评论都能够加载,并且不会重复获取。

爬取携程评论:如何解决重复评论问题并获取所有评论

原文地址: https://www.cveoy.top/t/topic/o6Ce 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录