技术路线说明:爬取豆瓣影评
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
s = requests. Session( )
EXCEL_FILE_PATH = 'dataset/douban/douban_comments.xlsx'
cookies = {
'bid' : 'SzNvd-H3HQ8' ,
'douban-fav-remind' : '1' ,
}
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信息,并实施更复杂的反反爬虫措施。