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

2024-05-31 23:28

本文主要是介绍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())

这篇关于AI网络爬虫:无限下拉滚动页面的另类爬取方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较