AI网络爬虫:无限下拉滚动页面的另类爬取方法

现在很多网页都是无限下拉滚动的。可以拉动到底部,然后保存网页为mhtml格式文件。

接着,在ChatGPT中输入提示词:

你是一个Python编程高手,要完成一个关于爬取网页内容的Python脚本的任务,下面是具体步骤:

在f盘新建一个Excel文件:poe热门bot.xlsx;

用Pyppeteer库的无界面模式模拟用户打开本地的网页文件:"F:\AI自媒体内容\AI行业数据分析\探索 - Poe.mhtml";

解析源代码;

定位 class="InfiniteScroll_container__PHsd4 ExploreBotsPagedList_infiniteScroll__000mi"的div标签;

定位div标签里面的所有a标签,提取其href属性值,这是bot的URL地址,写入Excel文件的第4列;

定位a标签里面class="BotListItem_botName__IYKgR"的div标签,这是bot名称,写入Excel文件的第1列;

定位a标签里面class="BotListItem_botDescription__9V_Sc"的div标签,这是bot简介,写入Excel文件的第2列;

定位a标签里面class="BotListItem_activeUserCount__m8cHa"的div标签,这是bot的用户数量,写入Excel文件的第3列;

注意:每一步都要输出相关信息到屏幕

一步一步的思考,但是所有的代码要整合在一起,不要分成一段一段的;

网页的文件编码是utf-8;

如果a标签里面没有一些div元素,就跳过;

chrome的路径为:D:\Program Files\chrome-win126\chrome.exe

chromedriver路径为:D:\Program Files\chromedriver126\chromedriver.exe

Chatgpt生成Python源代码:

import asyncio

import os

from bs4 import BeautifulSoup

from openpyxl import Workbook

from pyppeteer import launch

async def main():

# 步骤1:在F盘新建一个Excel文件

file_path = r'F:\poe热门bot.xlsx'

wb = Workbook()

ws = wb.active

ws.title = "Bots Info"

ws.append(["Bot Name", "Bot Description", "Active Users", "Bot URL"])

wb.save(file_path)

print(f"Excel文件已创建: {file_path}")

# 步骤2:用Pyppeteer库的无界面模式模拟用户打开本地的网页文件

local_file_path = r'F:\AI自媒体内容\AI行业数据分析\探索 - Poe.mhtml'

browser = await launch(executablePath=r'D:\Program Files\chrome-win126\chrome.exe', headless=True, args=['--no-sandbox'])

page = await browser.newPage()

await page.goto(f'file://{local_file_path}')

# 步骤3:解析源代码

page_content = await page.content()

soup = BeautifulSoup(page_content, 'html.parser')

# 步骤4:定位 class="InfiniteScroll_container__PHsd4 ExploreBotsPagedList_infiniteScroll__000mi"的div标签

container_div = soup.find('div', class_='InfiniteScroll_container__PHsd4 ExploreBotsPagedList_infiniteScroll__000mi')

if container_div:

print("找到目标div标签")

else:

print("未找到目标div标签")

await browser.close()

return

# 步骤5:定位div标签里面的所有a标签,提取其href属性值,写入Excel文件的第4列

a_tags = container_div.find_all('a')

print(f"找到{len(a_tags)}个a标签")

# 步骤6:处理每个a标签,提取信息并写入Excel文件

for a_tag in a_tags:

bot_url = a_tag.get('href', 'N/A')

bot_name_div = a_tag.find('div', class_='BotListItem_botName__IYKgR')

bot_desc_div = a_tag.find('div', class_='BotListItem_botDescription__9V_Sc')

bot_users_div = a_tag.find('div', class_='BotListItem_activeUserCount__m8cHa')

if bot_name_div and bot_desc_div and bot_users_div:

bot_name = bot_name_div.get_text(strip=True)

bot_desc = bot_desc_div.get_text(strip=True)

bot_users = bot_users_div.get_text(strip=True)

ws.append([bot_name, bot_desc, bot_users, bot_url])

print(f"写入Bot信息:名称={bot_name}, 简介={bot_desc}, 用户数量={bot_users}, URL={bot_url}")

else:

print("跳过a标签,因为缺少必要的div元素")

# 保存Excel文件

wb.save(file_path)

print(f"所有信息已写入Excel文件:{file_path}")

await browser.close()

asyncio.get_event_loop().run_until_complete(main())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/337876.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs - 在win10中安装vs2013update5

文章目录 vs - 在win10中安装vs2013update5概述笔记直接安装vs2013-update5报错先安装vs2013原版安装 vs2013 update5测试备注END vs - 在win10中安装vs2013update5 概述 用VS2019写的程序,在早期windows(e.g. win7, win8.1)上安装时,需要UCRT。 UCRT是…

unity2020打包webGL时卡进程问题

我使用的2020.3.0f1c1,打包发布WEB版的时候会一直卡到asm2wasm.exe这个进程里,而且CPU占用率90%以上。 即使是打包一个新建项目的空场景也是同样的问题,我尝试过一直卡在这里会如何,结果还真打包成功了。只是打包一个空场景需要20…

latex bib引参考文献

1.bib内容 2.sn-mathphys-num是官方的参考文献格式 3.不用导cite包,文中这么写 4.end document前ckwx是自己命名的bib的名字

【自动化运维】不要相信人,把所有的东西都交给机器去处理

不积跬步,无以至千里;不积小流,无以成江海。 大家好,我是闲鹤,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了7年多,主要从事物联网/车…

【运维项目经历|023】Docker自动化部署与监控项目

目录 项目名称 项目背景 项目目标 项目成果 我的角色与职责 我主要完成的工作内容 本次项目涉及的技术 本次项目遇到的问题与解决方法 本次项目中可能被面试官问到的问题 问题1:项目周期是多久? 问题2:服务器部署架构方式及数量配置…

【SpringMVC】_SpringMVC实现用户登录

目录 1、需求分析 2、接口定义 2.1 校验接口 请求参数 响应数据 2.2 查询登录用户接口 请求参数 响应数据 4、服务器代码 5、前端代码 5.1 登录页面login.html 5.2 首页页面index.html 6、运行测试 1、需求分析 用户输入账号与密码,后端校验密码是否正确&a…

FineBi导出Excel后台版实现

就是不通过浏览器,在后台运行的导出 参考文档在:仪表板查看接口- FineBI帮助文档 FineBI帮助文档 我这里是将这个帮助文档中导出的excel文件写到服务器某个地方后,对excel进行其他操作后再下载。由于原有接口耦合了HttpServletRequest req, HttpServletResponse res对象,…

可变参数

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中,还可以定义可变参数。可变参数也称不定长参数,即传入函数中的实际参数可以是任意多个。 定义可变参数时&#xf…

SRS视频服务器应用研究

1.SRS尝试从源码编译启动 1.1.安装ubuntu 下载镜像文件 使用VMWare安装,过程中出现蓝屏,后将VM的软件版本从15.5升级到17,就正常了。 1.2.更新ubuntu依赖 1.3.下载源码 官方推荐下载develop 切换到用户目录,开始安装 安装后 突然…

[AI OpenAI] 为非营利组织推出OpenAI

我们正在启动一项新计划,以增强非营利组织对我们工具的可访问性,包括ChatGPT Team和Enterprise的折扣优惠。 今天,我们推出了OpenAI for Nonprofits,这是一项旨在增强非营利组织对我们工具的可访问性的新计划。 非营利组织已经在…

5G专网驻网失败分析(suci无效)

suci 5G终端第一次驻网时,注册消息Registartion request中携带的5GS mobile identity要携带suci类型的mobile identity。 注册消息协议规范见5G NAS 协议3gpp TS24.501 8.2.6 Registration request。 suci协议规范参见3gpp TS24.501 9.11.3.4 5GS mobile identity …

python zip()函数(将多个可迭代对象的元素配对,创建一个元组的迭代器)zip_longest()

文章目录 Python zip() 函数深入解析基本用法函数原型基础示例 处理不同长度的迭代器高级用法多个迭代器使用 zip() 与 dict()解压序列 注意事项内存效率:zip() 返回的是一个迭代器,这意味着直到迭代发生前,元素不会被消耗。这使得 zip() 特别…

Mysql | select语句导入csv后再导入excel表格

需求 从mysql数据库中导出数据到excel 解决方案 sql导出csv文件 sql SELECT col1,col2 FROM tab_01 WHERE col3 xxx INTO OUTFILE /tmp/result.csv FIELDS TERMINATED BY , ENCLOSED BY " LINES TERMINATED BY \n;csv文件导出excel文件 1、【数据】-【导入数据】 …

【redis】宝塔,线上环境报Redis error: ERR unknown command del 错误

两种方式: 1.打开宝塔上的redis,通过配置文件修改权限,注释:#rename-command DEL “” 2.打开服务器,宝塔中默认redis安装位置是:cd /www/server/redis 找到redis.conf,拉到最后,注释#rename-co…

『 Linux 』文件系统

文章目录 磁盘构造磁盘抽象化 磁盘的寻址方式磁盘控制器磁盘数据传输文件系统Inode数据块(Data Blocks)超级块(SuperBlock)块组描述符(Group Descriptor) 磁盘构造 磁盘内部构造由磁头臂,磁头,主轴,盘片,盘面,磁道,柱面,扇区构成; 磁头臂:控制磁头的移动,可以精确地…

测试工具fio

一、安装部署 fio是一款优秀的磁盘IO测试工具,在Linux中比较常用于测试磁盘IO 其下载地址:https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz 或者登录其官网:http://freshmeat.sourceforge.net/projects/fio/ 进行下载。 tar -zxvf fio-…

PCL 二维凸包切片法计算树冠体积

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 二维凸包法是先将树冠等间隔分层切片,如图(e)采用二维凸包算法对每层…

ABP框架+Mysql(二)

展示页面--图书列表页面 本地化 开始的UI开发之前,我们首先要准备本地化的文本(这是你通常在开发应用程序时需要做的).本地化文本在前端页面会常用。 本地化文本位于 Acme.BookStore.Domain.Shared 项目的 Localization/BookStore 文件夹下: 打开 en.json (英文翻译)文件并更…

Superset二次开发之Github项目推送到GitLab仓库

以下是从GitHub克隆Superset项目并将其推送到GitLab的详细操作步骤 lab 地址: xxx lab 配置: 生成SSH密钥 ssh-keygen -t rsa -b 4096 -C "邮箱地址" 默认情况下密钥会生成在~/.ssh (/c/Users/Administrator/.ssh/id_rsa)目录下。 公钥添加到GitLab: 打开公钥文件…

音视频开发—FFmpeg打开麦克风,采集音频数据

文章目录 1.使用命令行实现采集PCM数据2.使用代码实现3.播放PCM4.PCM转换为WAV 1.使用命令行实现采集PCM数据 确保你的系统有FFmpeg安装。你可以通过在终端运行ffmpeg -version来检查是否已安装。 找出你的麦克风设备名。在Linux中,你可以使用arecord -l命令列出所…