现在很多网页都是无限下拉滚动的。可以拉动到底部,然后保存网页为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())