【爬虫】豆瓣影评技术路线分享

技术路线说明:爬取豆瓣影评

1. 准备工作

  • 导入所需的库,包括re、time、random、requests、pandas和BeautifulSoup。
  • 创建一个Session对象以便保存Cookie信息。
  • 定义Excel文件保存路径和登录后的Cookie信息。
import re
import time
import random
import requests
import pandas as pd
from bs4 import BeautifulSoup

# 生成Session对象,用于保存Cookie
s = requests.Session()
# Excel文件保存路径
EXCEL_FILE_PATH = 'dataset/douban/douban_comments.xlsx'

# 定义登录后的Cookie信息
cookies = {
    'bid': 'SzNvd-H3HQ8',
    'douban-fav-remind': '1',
    # 其他Cookie信息...
}

2. 定义函数spider_comment(page)

  • 功能:爬取某一页的豆瓣影评。
  • 输入参数:页码page
  • 返回值:包含该页影评的字典列表,如果请求失败则返回空列表。
  • 流程:
    • 构建评论页面URL。
    • 发送GET请求获取页面内容,使用Session对象保存了登录后的Cookie信息。
    • 使用BeautifulSoup解析页面内容。
    • 查找并提取影评的各项信息,如点赞数、推荐度、评论作者、评论时间和评论内容。
    • 将提取的信息存储为字典,并将字典加入列表。
    • 返回包含该页所有影评信息的列表。

3. 定义函数write_to_excel(comments)

  • 功能:将影评信息写入Excel表格。
  • 输入参数:影评信息列表comments
  • 流程:
    • 将影评信息列表转换为DataFrame。
    • 使用pandas将DataFrame写入Excel文件。
    • 打印提示信息,表明写入操作完成。

4. 定义函数batch_spider_comment()

  • 功能:批量爬取豆瓣影评。
  • 流程:
    • 循环爬取多页的影评信息,调用spider_comment()函数。
    • 合并每页的影评信息到一个总的列表中。
    • 每次爬取页面后,随机等待一段时间,以模拟人的操作,防止被封IP。
    • 调用write_to_excel()函数将所有影评信息写入Excel表格。

5. 主程序入口

  • if __name__ == '__main__':条件下,调用batch_spider_comment()函数,开始批量爬取豆瓣影评并写入Excel表格。

6. 结果展示

  • 最终将爬取到的豆瓣影评信息存储在指定的Excel文件中,方便后续分析和处理。

7.核心思路

  • 最开始进行爬虫时,程序尝试爬取第十页时失败时,表明网站对爬虫的访问进行了限制,例如限制了访问频率、设置了登录限制或者使用了反爬虫机制,比如验证码。
  • 为了解决这个问题,我尝试用代码模拟登录的方法,以获取登录后的Cookie信息。然而,最终未能成功绕过图形验证码的限制。在这种情况下,我采用了预先获取到的登录后的Cookie信息的策略。这种方式绕过了登录验证的需要,使得爬虫程序能够以登录状态访问目标页面。
  • 在爬取阶段,观察了需要爬取的所有网页链接结构,并利用BeautifulSoup库解析了网页代码。BeautifulSoup提供了一种便捷的方式来解析HTML文档,并从中提取所需的信息。通过遍历网页中的标签和属性,能够有效地定位到目标信息,并将其提取出来。
  • 尽管使用预先获取到的Cookie信息能够绕过登录验证,但需要注意到这种方法的局限性。一旦Cookie失效或过期,就需要重新获取新的Cookie信息。此外,还需要考虑到可能存在的反爬虫机制,比如验证码,需要进一步的研究和应对策略。因此,为了保持爬虫程序的稳定性和持续性,可能需要定期更新Cookie信息,并实施更复杂的反反爬虫措施。
  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值