BeautifulSoup库TapTap评论爬虫

最近在写关于评论数据主题建模和情感分析的作业,本来想用八爪鱼直接爬TapTap的评论数据,但是自动识别网页总是定位错误,还是回归BeautifulSoup和Request来进行评论内容的爬取,具体操作步骤如下

导入所需的库

import re
import requests
import pandas as pd
from bs4 import BeautifulSoup

BeautifulSoup库:BeautifulSoup是基于re开发的,可以从HTML或XML文件中提取数据的python库;它能够通过转换器实现惯用的文档导航、查找、修改文档的方式 ,可以提高提取数据的效率和爬虫开发的效率。

Requsts库:equests是基于urllib,使用Apache2 Licensed许可证开发的HTTP库。其在python内置模块的基础上进行了高度封装,使得Requests能够模拟浏览器的需求,轻松完成浏览器相关的任何操作。

获取User-Agent

首先进入需要爬取的评论界面,复制网页URL,这里以无限暖暖 - 游戏评价 - TapTap为例,进入界面后,按F12或者鼠标右键选择检查,打开控制台,选择网络。

刷新网页,即可看到刷新出review

点击review,拉到最下方,可以看到User-Agent,复制下来,它很重要

分析HTML结构

Ctrl+Shift+C,选择页面中的评论数据

复制 outerHTML,这里太长了就只用图片来表示

-------------------------------------------------------------------------------------------------------------------------------- 

 (不过这里用不到)

我们可以发现,所有的评论都嵌套在text-box__content中,就find_all来匹配就好了。我一开始误以为嵌套在heading-m14-w14中,结果爬出来的评论数据每一条评论都重复,大家不要犯这种低智的错啊。

爬虫代码

# 定义函数 get_taptap_reviews,用于爬取评论
def get_taptap_reviews(url, user_agent, max_reviews=300):
    # 设置请求头,模拟浏览器访问
    headers = {'User-Agent': user_agent}
    reviews = []
    page = 1
    # 循环直到获取到足够的评论或者没有更多的评论页面
    while len(reviews) < max_reviews:
        # 构建评论页面的URL
        review_url = f"{url}?page={page}"
        # 发送GET请求
        response = requests.get(review_url, headers=headers)
        # 解析HTML内容
        soup = BeautifulSoup(response.text, 'html.parser')
        # 查找所有的评论div
        review_divs = soup.find_all('div', class_='text-box__content')
        # 如果没有找到评论,则退出循环
        if len(review_divs) == 0:
            break
            
        # 遍历每个评论div
        for review_div in review_divs:
            # 获取评论文本并去除前后空白
            review = review_div.text.strip()
            # 将评论添加到列表中
            reviews.append(review)
            # 如果已经获取到足够的评论,则退出循环
            if len(reviews) >= max_reviews:
                break

        # 翻页
        page += 1
    # 返回评论列表
    return reviews

# 定义函数 save_reviews_to_excel,用于将评论保存到Excel文件
def save_reviews_to_excel(reviews, filename='taptap.xlsx'):
    # 将评论列表转换为DataFrame
    df = pd.DataFrame(reviews, columns=['comment'])
    # 将DataFrame保存到Excel文件
    df.to_excel(filename, index=False)

主程序如下

# 主程序入口
if __name__ == "__main__":
    # 目标网页URL
    url = "https://www.taptap.cn/app/247283/review"
    # 模拟浏览器的User-Agent
    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0"
    # 设置最大爬取评论数为300
    max_reviews = 300
    # 调用函数爬取评论
    reviews = get_taptap_reviews(url, user_agent, max_reviews)
    # 调用函数将评论保存到Excel文件
    save_reviews_to_excel(reviews)

在实际操作的过程中,需要将user_agent换成你自己的。 

完整代码

import requests
from bs4 import BeautifulSoup
import re
import pandas as pd

# 定义函数 get_taptap_reviews,用于爬取评论
def get_taptap_reviews(url, user_agent, max_reviews=300):
    # 设置请求头,模拟浏览器访问
    headers = {'User-Agent': user_agent}
    reviews = []
    page = 1
    # 循环直到获取到足够的评论或者没有更多的评论页面
    while len(reviews) < max_reviews:
        # 构建评论页面的URL
        review_url = f"{url}?page={page}"
        # 发送GET请求
        response = requests.get(review_url, headers=headers)
        # 解析HTML内容
        soup = BeautifulSoup(response.text, 'html.parser')
        # 查找所有的评论div
        review_divs = soup.find_all('div', class_='text-box__content')
        # 如果没有找到评论,则退出循环
        if len(review_divs) == 0:
            break
            
        # 遍历每个评论div
        for review_div in review_divs:
            # 获取评论文本并去除前后空白
            review = review_div.text.strip()
            # 将评论添加到列表中
            reviews.append(review)
            # 如果已经获取到足够的评论,则退出循环
            if len(reviews) >= max_reviews:
                break

        # 翻页
        page += 1
    # 返回评论列表
    return reviews

# 定义函数 save_reviews_to_excel,用于将评论保存到Excel文件
def save_reviews_to_excel(reviews, filename='taptap.xlsx'):
    # 将评论列表转换为DataFrame
    df = pd.DataFrame(reviews, columns=['comment'])
    # 将DataFrame保存到Excel文件
    df.to_excel(filename, index=False)

# 主程序入口
if __name__ == "__main__":
    # 目标网页URL
    url = "https://www.taptap.cn/app/247283/review"
    # 模拟浏览器的User-Agent
    user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0"
    # 设置最大爬取评论数为300
    max_reviews = 300
    # 调用函数爬取评论
    reviews = get_taptap_reviews(url, user_agent, max_reviews)
    # 调用函数将评论保存到Excel文件
    save_reviews_to_excel(reviews)

包括APP爬虫、数据清洗、pyecharts可视化、pytorch框架下LSTM模型情感分析 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求实现,如Python中的Requests。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据、NoSQL数据、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值