这段代码使用了 Selenium 和 BeautifulSoup 库来爬取某个酒店的用户评论信息。具体流程如下:

  1. 设置请求头,指定要爬取的网页链接。

  2. 创建 Chrome 浏览器对象,并打开网页。

  3. 解析页面,使用 BeautifulSoup 库查找指定的 HTML 标签,提取需要的数据,并将其存储到一个字典中。

  4. 判断是否还有下一页,如果有,则点击下一页按钮,等待页面加载完成后继续解析。

  5. 当所有页面都被爬取完毕后,关闭浏览器,并打印出爬取到的评论数据和数量。

这段代码报错是因为 Chrome 浏览器的路径没有正确设置。可以通过修改浏览器路径来解决这个问题。如果想使用火狐浏览器,需要先下载 Firefox 的驱动 geckodriver,并将其路径添加到系统环境变量中。

获取浏览器路径可以通过在命令行中输入 where chromewhere firefox 来查看。如果浏览器没有添加到系统环境变量中,则需要手动指定其路径。

import requests
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
import time

# 设置请求头
count = 0
review_dict = {}
url = 'https://www.booking.cn/hotel/cn/chengdu-tuo-ban-xie-qing-nian-lv-she.zh-cn.html#tab-reviews'

# 创建浏览器对象
browser = webdriver.Chrome()

# 打开网页
browser.get(url)

# 等待页面加载完成
time.sleep(1)

while True:
    # 解析页面
    soup = BeautifulSoup(browser.page_source, 'html.parser')
    review_tags = soup.find_all('li', {'class': 'review_list_new_item_block'})
    # review_tags=soup.select('div.review_item_review_content')
    print(review_tags)
    for review in review_tags:
        try:
            count += 1
            pos = review.find('span', {'class': 'c-review__prefix c-review__prefix--color-green'})
            review_pos = pos.find('span', {'class': 'c-review__body'}).text.strip() if pos else '无'
            review_staydate = review.find('span', {'class': 'c-review-block__date'}).text.strip()
            neg = review.find('span', {'class': 'c-review__prefix'})
            review_neg = neg.find('span', {'class': 'c-review__body'}).text.strip() if neg else '无'
            review_title = review.find('span', {'class': 'c-review-block__title c-review__title--ltr'}).text.strip()
            review_dict[f'客户{count}' + review_staydate] = [review_title, review_neg, review_pos]
        except:
            continue

    # 判断是否还有下一页
    next_button = browser.find_element_by_css_selector('a#review_next_page_link')
    if next_button.get_attribute('class') == 'disabled':
        break
    # 点击下一页
    next_button.click()
    # 等待页面加载完成
    time.sleep(1)

# 关闭浏览器
browser.quit()

print(review_dict)
print(len(review_dict))
使用 Python 爬取酒店用户评论数据

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

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