整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

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

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())

天南地北大拜年# 一起领红包>根据您提供的代码,这是一个使用 jQuery 来实现网页导航栏动态位置调整、滚动到特定内容区域时高亮导航项,以及用户留言和评价功能的网页。下面是对这些功能的报告:

### 1. 导航栏位置调整

- **功能描述**: 导航栏的位置会根据浏览器窗口的大小动态调整,以确保它在视觉上居中显示。

- **实现方法**: 使用 jQuery 监听 `resize` 事件,实时计算导航栏的宽度,并动态设置其 `right` CSS属性。

### 2. 滚动导航高亮

- **功能描述**: 当用户滚动到网页的某个特定内容区域时,对应的导航项会被高亮显示。

- **实现方法**: 首先,获取每个内容区域的位置顶部值并存入数组。然后,监听 `scroll` 事件,根据滚动位置判断当前处于哪个内容区域,并使用 `.addClass("selected")` 来高亮当前导航项。

### 3. 用户留言功能

- **功能描述**: 用户可以在网页上留下自己的意见或建议。

- **实现方法**: 使用 HTML 的 `` 元素创建一个多行文本输入框,并通过 jQuery 监听按钮点击事件来处理留言的提交。

### 4. 星级评价功能

- **功能描述**: 用户可以通过点击星星图标来对网页进行评价。

- **实现方法**: HTML 使用 `` 元素创建星星图标,并通过 jQuery 来监听点击事件,根据点击的星星图标更新页面上的评级显示。

### 5. 功能完善建议

- **用户体验**: 增加留言提交后的反馈机制,如提示用户留言成功或出现错误。

- **交互设计**: 对于星级评价,可以增加更多的交互效果,如星星点击效果,以及评价后的结果展示。

- **响应式设计**: 确保网页在不同设备上均有良好的显示效果,包括手机和平板电脑。

- **性能优化**: 对于 `scroll` 和 `resize` 事件,应考虑节流(throttle)或防抖(debounce)技术,以避免过度事件处理导致的性能问题。

### 6. 错误和警告

- **代码错误**: 在您的代码中,有几个问题需要解决。比如,变量 `sectionHeightArray` 应该在 `$(window).scroll` 事件处理函数外部声明,否则它可能无法正确引用。此外,按钮点击事件处理函数没有提供,需要补充相应的代码来处理用户的交互。

- **跨浏览器兼容性**: 需要确保所有的 jQuery 代码在不同的浏览器上都能正常工作,特别是旧版本的浏览器。

### 7. 安全性

- **XSS防范**: 确保从用户那里收集的数据在插入到网页上之前进行了适当的清理,以防止跨站脚本(XSS)攻击。

整体而言,该网页的交互功能对于用户参与和反馈提供了良好的基础,但在发布前需要进行详细的测试和优化以确保最佳的用户体验和性能。类图(15分):

主题:智能家居控制系统

描述:为一个智能家居控制系统绘制组件图,展示系统中各个组件如用户界面、数据存储、设备控制等的关系

ss3中的transition和transform配合可以做出许多好玩的东西来,下面我们来说说这哥俩配合做出来的一个应用及其广泛而实用的干货。请拿走,不谢!

这个应用在展示网站模板或者图册显示应用很广泛!

一、先看效果:

二、效果说明:

当鼠标移动到div或者是a链接的时候,图片向上滚动,直到显示完全,当鼠标移开的时候,图片回到最开始的位置。

三、效果分析:

向上滚动肯定应用到css3的属性:transform 和transition;下面我们来看看它的用法:

  1. transform

  • 曾经在一篇文章(css3属性(transform)的一个css3动画小应用)中说过了scale和transform-origin的应用,今天主要用到的是transform: translate3d这个属性。

  • transform: translate3d(x ,y,z)主要作用就是:定义 3D 转化,当然这次我们只是用了Y轴的变化,所以定义Y轴的数值或者百分比就可以。

2、transition:

用法:包含4个属性:transition: property duration timing-function delay;

  • property : CSS 属性的名称

  • duration 完成过渡总共时间

  • timing-function 效果或者曲线

  • delay 延迟时间

    在下面的实例中将看到真正用法:

四、实现效果:

  1. html结构:

    大概说一下:frame.png就是外面那个苹果电脑的图片;

    Convertible.jpg是我们的网站模板图片,很长;

  2. css样式:

  3. 最核心的代码,就是最后那一段,看到了-86.8%了吗?这个数字是我测试出来的,根据自己图片的高度,大家的高度不同,则这个值不同。

    transition: transform 6s linear; 意思是说,transform这个属性将用6秒匀速的形式完成过渡;

完成了,是不是很简单,其实,css不难,难就难在一个思路上,如果思路正确,就可以实现好的方案。

最后,谢谢大家观赏,欢迎订阅!