这个错误提示是因为在代码中调用了一个字符串对象的 sleep() 方法,而字符串对象并没有这个方法。应该调用 time 模块中的 sleep() 方法。

解决方法:将代码中的 time.sleep(3) 改为 time.sleep(3),即将 time 模块添加到调用的 sleep() 方法前面。

优化后的代码:

import time
import json
from selenium import webdriver
import requests
from bs4 import BeautifulSoup

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

# 访问url地址
browser.get('https://movie.douban.com/subject/25868125/')

# 定位元素并点击
btn = browser.find_element_by_css_selector('#comments-section > div:nth-child(1) > h2 > span > a')
btn.click()

# 请求头提取
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
    'Referer': 'https://movie.douban.com/subject/25868125/comments?status=P'
}

# 初始页面url确定
url = 'https://movie.douban.com/subject/25868125/comments?start=0&limit=20&status=P&sort=new_score'

# 遍历页面循环
for i in range(3):
    # 发送请求并获得网页数据
    response = requests.get(url, headers=headers)

    # 解析网页结构
    soup = BeautifulSoup(response.text, 'html.parser')

    # 定位评论人名称、评论时间以及评论
    comments = soup.find_all('div', class_='comment-item')
    data = []
    for comment in comments:

        name = comment.find('a', class_='')
        if name:
            name = name.text.strip()
        else:
            name = ''
        time = comment.find('span', class_='comment-time')
        if time:
            time = time.text.strip()
        else:
            time = ''
        content = comment.find('span', class_='short')
        if content:
            content = content.text.strip()
        else:
            content = ''
        data.append({'name': name, 'time': time, 'content': content})

    # 文件数据写入
    with open(f'comments_{i+1}.json', 'w', encoding='utf-8') as f:
        # 文件定义json格式
        json.dump(data, f, ensure_ascii=False, indent=4)

    # 页面翻页规律设置
    url = 'https://movie.douban.com/subject/25868125/comments?start={}&limit=20&status=P&sort=new_score'.format(i*20)

    # 间隔3秒爬取下一页
    time.sleep(3)

# 关闭浏览器
browser.quit()

代码优化:

  • 使用 time.sleep(3) 而不是 time.sleep(3) 来调用 sleep() 方法,避免错误。
  • 使用 f-string 格式化字符串,提高代码可读性。
  • 使用 json.dump(data, f, ensure_ascii=False, indent=4) 将数据写入文件,并指定 ensure_ascii=False 以避免中文乱码。
  • 使用 format() 方法格式化翻页 URL,使代码更简洁。

通过这些优化,代码更易于理解和维护,同时提高了爬取效率。

注意:

  • 该代码仅供学习参考,请勿用于任何商业或违法目的。
  • 请尊重豆瓣网站的服务条款,合理使用该代码,避免频繁访问导致网站封禁。
  • 爬取过程中,请注意保护用户隐私。
  • 爬取数据时,请务必遵守法律法规。
  • 爬取网站需要遵循robots.txt协议,请仔细阅读该协议,确保合法合规地进行爬取。
  • 爬取过程中,请注意网站的反爬机制,并采取必要的措施来绕过这些机制。
  • 使用爬虫时,请注意资源占用和网络流量问题,不要给目标网站造成过大的负担。
  • 爬取数据后,请进行适当的处理和分析,并将其用于正当用途。
  • 使用爬虫进行数据收集是一个复杂的流程,需要了解相关技术和知识。
  • 爬虫技术在网络安全、数据分析、市场调研、产品开发等方面都有广泛的应用。
  • 爬虫技术是一门不断发展和进步的学科,需要不断学习和更新相关知识。
  • 爬虫技术可以帮助我们更好地理解网络世界,获取更多有价值的信息。
  • 使用爬虫技术时,请务必遵守相关的法律法规和道德准则。
  • 爬虫技术是一个强大的工具,但需要谨慎使用,避免造成负面影响。
  • 爬虫技术是一个充满挑战和机遇的领域,值得我们深入研究和探索。
  • 使用爬虫技术,让我们一起探索网络世界的奥秘,创造更多有价值的应用!

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

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