这段代码使用 Selenium 模拟浏览器请求,爬取某个酒店的评论信息。首先创建一个浏览器对象,打开指定的网页,等待页面加载完成后,解析页面,获取评论信息并存储在一个字典中。然后判断是否还有下一页评论,如果有就点击下一页按钮,等待页面加载完成后继续解析评论信息。最后关闭浏览器。

这段代码可能会报错“WebDriverException: unknown error: cannot find Chrome binary”,是因为在创建浏览器对象时需要指定 Chrome 浏览器的路径,如果没有指定或者指定错误,就会报这个错。可以通过指定 Chrome 浏览器的路径来解决这个问题。例如:

browser = webdriver.Chrome('/usr/bin/google-chrome')

其中 '/usr/bin/google-chrome' 是 Chrome 浏览器的路径。

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 爬虫实战:使用 Selenium 抓取酒店评论信息

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

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