1. 优化网络爬虫代码:

import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC

def get_comments(soup): comments = soup.select('.comment-item') for comment in comments: name = comment.select('.comment-info > a')[0].text.strip() time = comment.select('.comment-info > span')[0].text.strip() content = comment.select('.short')[0].text.strip() print(name, time, content)

def crawl(url): # 创建浏览器对象 browser = webdriver.Chrome()

# 访问url地址
browser.get(url)

# 设置浏览器窗口最大化
browser.maximize_window()

# 设置请求头部信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Cookie': '你的Cookie',
    'Referer': url
}

# 发送请求获取页面内容
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')

# 解析页面内容获取影评数据
get_comments(soup)

# 循环爬取所有页的影评数据
while True:
    try:
        # 查找“下一页”按钮元素,若找到则点击,否则退出循环
        next_button = WebDriverWait(browser, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.comment .next a'))
        )
        next_button.click()

        # 等待页面加载完成
        WebDriverWait(browser, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.comment-item'))
        )

        # 获取页面内容
        soup = BeautifulSoup(browser.page_source, 'html.parser')

        # 解析页面内容获取影评数据
        get_comments(soup)
    except:
        break

# 关闭浏览器
browser.close()

if name == 'main': # 初始页面url确定 start_url = 'https://movie.douban.com/subject/25868125/'

# 页面翻页规律设置
for i in range(10):
    url = start_url + 'comments?start=' + str(i*20) + '&limit=20&status=P&sort=new_score'
    crawl(url)
  1. 添加遍历页面循环:

if name == 'main': # 初始页面url确定 start_url = 'https://movie.douban.com/subject/25868125/'

# 页面翻页规律设置
for i in range(10):
    url = start_url + 'comments?start=' + str(i*20) + '&limit=20&status=P&sort=new_score'
    crawl(url)

其中,range(10)表示遍历10页。如果想要遍历更多的页数,可以修改range()函数的参数。

  1. 初始页面url确定:

start_url = 'https://movie.douban.com/subject/25868125/'

其中,25868125为电影《寻梦环游记》的豆瓣id,可以根据需要修改为其他电影的豆瓣id。

  1. 页面翻页规律设置:

url = start_url + 'comments?start=' + str(i*20) + '&limit=20&status=P&sort=new_score'

其中,start表示影评的起始位置,limit表示每页显示的影评数量,status表示影评的状态(P表示全部影评,F表示精选影评),sort表示影评的排序方式(new_score表示按照评分从高到低排序,time表示按照时间从新到旧排序)。可以根据需要修改这些参数,以获取不同的影评信息


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

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