selenium爬取TapTap评论

2024-05-11 07:04
文章标签 selenium 评论 爬取 taptap

本文主要是介绍selenium爬取TapTap评论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇写的beautifulsoup和request爬取出的结果有误。首先,TapTap网页以JS格式解析,且评论并没有“下一页”,而是每次加载到底部就要进行等待重新加载。我们需要做的,是模仿浏览器的行为,所以这里我们用Selenium的方式爬取。

下载ChromeDriver

ChromeDriver作用是给Pyhton提供一个模拟浏览器,让Python能够运行一个模拟的浏览器进行网页访问 用selenium进行鼠标及键盘等操作获取到网页真正的源代码。

官方下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

注意,一定要下载自己chrome浏览器对应版本的驱动,根据自己的电脑版本下载对应系统的文件

以Windows版本为例,将下载好的chromedriver_win64.zip解压得到一个exe文件,将其复制到Python安装目录下的Scripts文件夹即可

爬虫操作

首先导入所需库

import pandas as pd
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

滚动到底部的驱动

def scroll_to_bottom(driver):# 使用 JavaScript 模拟滚动到页面底部driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

爬取评论

def get_taptap_reviews(url, max_reviews=50):reviews = []driver = webdriver.Chrome()  # 需要安装 Chrome WebDriver,并将其路径添加到系统环境变量中driver.get(url)try:# 等待评论加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "text-box__content")))last_review_count = 0while len(reviews) < max_reviews:review_divs = driver.find_elements(By.CLASS_NAME, 'text-box__content')for review_div in review_divs[last_review_count:]:review = review_div.text.strip()reviews.append(review)if len(reviews) >= max_reviews:breakif len(reviews) >= max_reviews:breaklast_review_count = len(review_divs)# 模拟向下滚动页面scroll_to_bottom(driver)# 等待新评论加载time.sleep(10)  # 等待时间也可以根据实际情况调整,确保加载足够的评论# 检查是否有新评论加载new_review_divs = driver.find_elements(By.CLASS_NAME, 'text-box__content')if len(new_review_divs) == len(review_divs):break  # 没有新评论加载,退出循环finally:driver.quit()return reviews[:max_reviews]

将评论输出到excel中

def save_reviews_to_excel(reviews, filename='taptap.xlsx'):df = pd.DataFrame(reviews, columns=['comment'])df.to_excel(filename, index=False)

main

if __name__ == "__main__":url = "https://www.taptap.cn/app/247283/review"max_reviews = 50reviews = get_taptap_reviews(url, max_reviews)save_reviews_to_excel(reviews)

查看输出的结果

代码汇总

import pandas as pd
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdef scroll_to_bottom(driver):# 使用 JavaScript 模拟滚动到页面底部driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")def get_taptap_reviews(url, max_reviews=50):reviews = []driver = webdriver.Chrome()  # 需要安装 Chrome WebDriver,并将其路径添加到系统环境变量中driver.get(url)try:# 等待评论加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "text-box__content")))last_review_count = 0while len(reviews) < max_reviews:review_divs = driver.find_elements(By.CLASS_NAME, 'text-box__content')for review_div in review_divs[last_review_count:]:review = review_div.text.strip()reviews.append(review)if len(reviews) >= max_reviews:breakif len(reviews) >= max_reviews:breaklast_review_count = len(review_divs)# 模拟向下滚动页面scroll_to_bottom(driver)# 等待新评论加载time.sleep(10)  # 等待时间也可以根据实际情况调整,确保加载足够的评论# 检查是否有新评论加载new_review_divs = driver.find_elements(By.CLASS_NAME, 'text-box__content')if len(new_review_divs) == len(review_divs):break  # 没有新评论加载,退出循环finally:driver.quit()return reviews[:max_reviews]def save_reviews_to_excel(reviews, filename='taptap.xlsx'):df = pd.DataFrame(reviews, columns=['comment'])df.to_excel(filename, index=False)if __name__ == "__main__":url = "https://www.taptap.cn/app/247283/review"max_reviews = 50reviews = get_taptap_reviews(url, max_reviews)save_reviews_to_excel(reviews)

 

 

 

这篇关于selenium爬取TapTap评论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978827

相关文章

如何使用Selenium捕获控制台日志

Selenium是一个流行的开源工具,用于自动化Web浏览器。其中一个关键功能是能够与浏览器的开发者控制台交互。本文将向您展示如何在Selenium中使用Java获取控制台日志。这些日志对于调试和解决Selenium脚本的问题非常有用。 如何查看任何网页的控制台日志 首先,打开浏览器的开发者控制台。在大多数浏览器中,您可以通过右键点击页面并选择“检查”来做到这一点。我们将在我们的测试网站——h

0基础学习爬虫系列:网页内容爬取

1.背景 今天我们来实现,监控网站最新数据爬虫。 在信息爆炸的年代,能够有一个爬虫帮你,将你感兴趣的最新消息推送给你,能够帮你节约非常多时间,同时确保不会miss重要信息。 爬虫应用场景: 应用场景主要功能数据来源示例使用目的搜索引擎优化 (SEO)分析关键词密度、外部链接质量等网站元数据、链接提升网站在搜索引擎中的排名市场研究收集竞品信息、价格比较电商网站、行业报告制定更有效的市场策略舆情

如何利用评论进行有效的 ASO

如何利用评论进行有效的ASO的问题的答案通常以“正面评论”一词开始。确实,这句话首先浮现在脑海中。但这个问题的答案包括负面评论、用户体验、提高知名度、评分、根据评论优化应用程序以及许多其他有趣的点。这里几乎没有无聊的统计数据,这些数字也不会让你眼花缭乱。处理评论需要与用户的沟通和互动,需要社交性,甚至需要一点心理学。在本文中,我们将讨论评论对应用程序的总体影响,以及它们对 ASO 优化的

python网络爬虫(五)——爬取天气预报

1.注册高德天气key   点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://restapi.amap.com/v3/weather/weatherInfo?parameters,若要获取某城市的天气推荐 2.安装MongoDB

selenium的webdriver三种等待方式(显式等待WebDriverWait+implicitly_wait隐式等待+sleep强制等待)

隐式等待是等页面加载,不是等元素!!! 1、显式等待  一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码。显式等待是等元素加载!!! from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import

selenium webdriver实现的原理及流程

用Selenium实现自动化,主要需要三个东西: 1.自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动) 2.浏览器驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏览器 3.浏览器:执行浏览器驱动发来的指令,并最终完成工程师想要的操作。 测试代码中包含了各种期望的对浏览器界面的操作,例如点击。测试代码通过给Webdriver发送指令,让Webdriv

Selenium 实现图片验证码识别

前言 在测试过程中,有的时候登录需要输入图片验证码。这时候使用Selenium进行自动化测试,怎么做图片验证码识别?本篇内容主要介绍使用Selenium、BufferedImage、Tesseract进行图片 验证码识别。 环境准备 jdk:1.8 tessdata:文章末尾附下载地址 安装Tesseract 我本地是ubuntu系统 sudo apt install tesserac

【爬虫渲染神器】selenium 和pyppeteer 的动态渲染ajax反爬虫

许多网页是动态加载的网页,其中不乏使用了ajax异步技术,那么我们有没有一种渲染工具,直接省略分析过程,模拟浏览器渲染的操作呢,获取到我们想要的内容。当然有,下面我们介绍两种渲染工具的实战使用。 目标网站: http://www.porters.vip/verify/sign/ 点击参看详情页的里面内容。 前一篇文章,我们介绍了,js逆向分析两种方法JS逆向–签名验证反爬虫】sign签名验证

【爬虫神器 pyppeteer】比 selenium 更高效的爬虫利器--pyppeteer

Puppeteer 是 Google 基于 Node.js 开发的工具,调用 Chrome 的 API,通过 JavaScript 代码来操纵 Chrome 完成一些操作,用于网络爬虫、Web 程序自动测试等。pyppeteer 使用了 Python 异步协程库 asyncio,可整合 Scrapy 进行分布式爬虫。要注意的是它执行python3.6+以后版本使用,下面我们一起来了解下如何使用。

CentOS7 安装Selenium+chrome+chromedriver

在无界面的CentOS7上安装Selenium+Chrome,并使用facebook的php-webdriver测试 系统环境 Operating System: CentOS Linux 7 (Core) Kernel: Linux 3.10.0-693.17.1.el7.x86_64 Architecture: x86-64 安装 chrome 使用下面的命令,在root用户下就可以安装最新