AI编程案例003/ ChatGPT写爬虫程序-通过搜狗搜索抓取微信公众号文章

爬虫教程:如何批量采集知乎 采集网站 【场景描述】通过搜狗搜索的知乎搜索栏目,按关键词搜索采集知乎正文 【入口网址】https://zhihu.sogou.com 【采集内容】 本次采集的数据为知乎文章的标题和内容 l思路分析 功能点总结:关键词配置链接、翻页、链接抽取、数据抽取 配置思路 l配置步骤 1.新建采集任务 选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可。由于本次采集是通过关键词采集相关内容,所以【采集... 阅读详情

在调研过程中,我发现可以先抓取微信公众号文章和知乎文章。而搜狗搜索提供了针对微信和知乎的搜索入口,因此我选择了它作为爬取的主要来源。搜狗搜索不需要登录,相比其他搜索引擎来说,爬取成本也相对较低。另外,我每天爬取最新的数据,所以10页的数据足够了。(超过10页需要登录)

0:如何向ChatGPT描述我的需求?

想法有了,接下来要去用ChatGPT写代码了。那如何向他描述我的需求呢。不妨先问一下它,我怎么描述它能理解清楚我的需求。

如上图,ChatGPT的回答非常具体清晰,我们按它的建议提出我们的需求即可。

1:整理需求,交给ChatGPT生成代码

按ChatGPT给我的要点,我整理了一下我的需求

按以下要求写一个爬虫程序

1.使用python和selenium

2.网站URL:weixin.sogou.com

3.输入关键字 [AIGC]

4.爬取标题、链接、来源

5.抓取前10页的内容

6.爬取的结果输出到Excel文件中,Excel文件命名为AIGC+微信+日期

如图:

ChatGPT生成第一版代码

import os

from datetime import datetime

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from openpyxl import Workbook

# 设置Chrome驱动器路径

chromedriver_path = "/path/to/chromedriver"

# 设置搜索关键字

keyword = "AIGC"

# 初始化Chrome驱动器

driver = webdriver.Chrome(chromedriver_path)

# 打开网站URL

driver.get("https://weixin.sogou.com")

# 找到搜索框并输入关键字

search_box = driver.find_element(By.ID, "query")

search_box.send_keys(keyword)

search_box.send_keys(Keys.ENTER)

# 循环爬取前10页的内容

for page in range(1, 11):

# 等待页面加载完成

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "news-list")))

# 获取当前页面的所有文章元素

articles = driver.find_elements(By.CLASS_NAME, "news-list").pop().find_elements(By.TAG_NAME, "li")

# 创建Excel工作簿

wb = Workbook()

# 创建工作表

ws = wb.active

# 设置工作表表头

ws.append(["标题", "链接", "来源"])

# 循环处理每篇文章

for article in articles:

# 获取文章标题和链接

title = article.find_element(By.TAG_NAME, "h3").text

link = article.find_element(By.TAG_NAME, "a").get_attribute("href")

# 获取文章来源

try:

source = article.find_element(By.CLASS_NAME, "account").text

except:

source = ""

# 将文章信息写入Excel工作表中

ws.append([title, link, source])

# 保存Excel文件

date_str = datetime.now().strftime("%Y%m%d")

filename = f"AIGC微信{date_str}.xlsx"

wb.save(filename)

# 点击下一页按钮

next_btn = driver.find_element(By.CLASS_NAME, "np")

next_btn.click()

# 关闭Chrome驱动器

driver.quit()

我们复制代码到PyCharm,然后执行一下,看看结果是否符合预期。

从截图我们可以看到,程序执行失败了。但是生成了文件。我们再看一下文件生成的数据对不对?

生成的文件里面确实有内容,但是只有最后一页的数据!

2:跟ChatGPT互动,让它修改代码(改bug)

我把上面代码执行的结果和异常信息告诉它,看它如何回复。

这个回复对小白来说显然不友好,我先不管它。直接让它修改自己的代码。我直接把刚才的代码贴给它(为什么这么做?),让它去修改bug。

把它写的代码贴给它后,它很显然发现了自己的错误,然后它自己修改了代码。

修改后代码

import os

from datetime import datetime

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from openpyxl import Workbook

# 设置Chrome驱动器路径

chromedriver_path = "/path/to/chromedriver"

# 设置搜索关键字

keyword = "AIGC"

# 初始化Chrome驱动器

driver = webdriver.Chrome(chromedriver_path)

# 打开网站URL

driver.get("https://weixin.sogou.com")

# 找到搜索框并输入关键字

search_box = driver.find_element(By.ID, "query")

search_box.send_keys(keyword)

search_box.send_keys(Keys.ENTER)

# 等待页面加载完成

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "news-list")))

# 获取Excel文件名

date_str = datetime.now().strftime("%Y%m%d")

filename = f"AIGC微信{date_str}.xlsx"

# 创建Excel工作簿

wb = Workbook()

# 创建工作表

ws = wb.active

# 设置工作表表头

ws.append(["标题", "链接", "来源"])

# 循环爬取前10页的内容

for page in range(1, 11):

# 获取当前页面的所有文章元素

articles = driver.find_elements(By.CLASS_NAME, "news-list").pop().find_elements(By.TAG_NAME, "li")

# 循环处理每篇文章

for article in articles:

# 获取文章标题和链接

title = article.find_element(By.TAG_NAME, "h3").text

link = article.find_element(By.TAG_NAME, "a").get_attribute("href")

# 获取文章来源

try:

source = article.find_element(By.CLASS_NAME, "account").text

except:

source = ""

# 将文章信息写入Excel工作表中

ws.append([title, link, source])

# 保存Excel文件

if page == 10:

wb.save(filename)

# 点击下一页按钮

try:

next_btn = driver.find_element(By.CLASS_NAME, "np")

next_btn.click()

except:

break

# 关闭Chrome驱动器

driver.quit()

这次我们执行代码后获取到了满意的效果,在搜狗输入【AIGC】后把前10页的微信公众号文章到抓取到了。

篇幅有限只截取一部分。

3:总结

  1. 整体效果还算满意,基本不用费太大劲就能实现我的需求。
  2. 提示词很重要,除了网上收集的模板,大家也可以用我的思路。

先去问ChatGPT怎么向他提问它才能理解你的需求。然后按它的调调给它提示词。

  1. 比较触动的是ChatGPT能发现自己的bug并自主修改。
  2. 目前看对一点编程经验的小白来说还不能那么容易的自己用ChatGPT写代码,需要一些编程的通识。

4:最后

回答一下我为什么把之前写的代码直接贴给它去修改?

有人或许说他不是能记住上下文吗。

看下图,当我让它重写时它又换了一个写法去写代码。

对写代码这种需求来说,我们上一版的代码都调一半了,它在换个思路显然是不合适。

所以我把之前的代码贴给它,让它去修改,否则用重写的方案又得再调一遍比较浪费时间。

【Python爬虫教程】进阶篇-11 使用代理获取微信公众号文章 以上内容便是使用代理爬取微信公众号文章的方法,涉及的新知识点不少,希望大家可以好好消化。 阅读详情

相关推荐

GPU加速的容器化AI开发:AnolisOS/CentOS8中的NVIDIA驱动与CUDA最佳实践

本文详细介绍了在AnolisOS/CentOS8系统中配置NVIDIA驱动与CUDA的最佳实践,涵盖驱动安装、CUDA工具链配置、容器运行时设置及性能优化等关键步骤。特别针对容器化AI开发场景,提供了GPU透传和资源管理的实用方案,帮助开发者构建高效的GPU加速开发环境。

weixin_27791839的博客 342

智能音箱开发者必看:CEVA-BX vs Cadence HiFi音频DSP实战选型指南(附功耗对比表)

本文深入对比了CEVA-BX和Cadence HiFi两大音频DSP架构在智能音箱开发中的性能差异,涵盖语音唤醒、多麦克风阵列处理等核心场景。通过实测数据和功耗对比表,为开发者提供选型参考,帮助优化产品性能和能效表现。

weixin_29309213的博客 227

MATLAB 2022b 用户专属:保姆级IPOPT求解器安装配置全流程(含OPTI工具箱)

本文为MATLAB 2022b用户提供IPOPT求解器的详细安装与配置指南,涵盖OPTI工具箱的适配安装、环境变量设置及常见问题解决方案。通过实战案例演示非线性优化问题的求解过程,帮助用户高效部署这一强大的优化工具,提升工程计算效率。

weixin_29092031的博客 407

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

告别 DEFINE VIEW:CDS View Entity 迁移全景实战(报表迁移 + ADT 向导 + 避坑清单)

CDS迁移的关键要点与策略 CDS DDIC-based View已被标记为废弃,迁移到CDS View Entity成为必要。迁移面临的主要挑战包括激活成本、命名约束和依赖风险。ABAP 7.57及以上版本必须优先处理,否则将积累技术债务。 迁移方式主要有两种: 报表路线:适合渐进式迁移的On-Premise项目 ADT向导:适合云环境批量迁移 关键注意事项: 必须提前检查SQL View依赖关系 金额/数量字段需要显式引用单位/货币字段 建议按使用场景分批迁移 最佳实践是结合报表进行系统盘点,再通过AD

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 209

工业仪表读数识别:YOLO目标检测 + OCR混合方案实战

仪表整体(meter):粗定位整只仪表,用于快速裁剪、排除背景干扰表盘区域(dial):精确的圆形/方形表盘区域,用于后续矫正和读数数字区域(display)/指针(pointer):数显表定位数码管区域,指针表可辅助定位指针为什么要分三级?因为现场仪表安装角度、距离、光照差异极大。先粗检再精检,比一步到位的准确率高很多,也方便后续做透视变换。工业仪表读数识别,技术路线的选择比算法精度更重要。选对了路线,事半功倍;选错了,怎么调都达不到验收标准。几条落地建议:指针表优先传统算法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 96

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1447

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: Python安装与运行环境搭建(windows版)
下一篇: npm 常用命令详解及示例
qbit2coding
博客等级 码龄4年 258粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值