社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用ChatGPT自动编写Python爬虫脚本

Python绿色通道 • 3 年前 • 890 次点击  
每天学Python新技能

后台回复【大礼包】送你Python自学大礼包



都知道最近ChatGPT聊天机器人爆火,我也想方设法注册了账号,据说后面要收费了。

ChatGPT是一种基于大语言模型的生成式AI,换句话说它可以自动生成类似人类语言的文本,把梳理好的有逻辑的答案呈现在你面前,这完全不同于传统搜索工具。

ChatGPT不光可以回答人文、科学、情感等传统问题,还可以写代码、改bug,程序员可就急了,简直是在抢饭碗,所以网上出现各种ChatGPT让你失业的焦虑言论。

俗话说“百闻不如一见”,我试着让ChatGPT用Python去写爬虫脚本,看它到底行不行?

1、爬取知乎上的专栏文章

提问:

帮我用python写代码爬取这个网站的文章 https://zhuanlan.zhihu.com/p/595050104

ChatGPT:

把给到的代码放进PyCharm中跑一遍,发现没有报错,且打印出了内容。

import requests
from bs4 import BeautifulSoup

url = "https://zhuanlan.zhihu.com/p/595050104"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

title = soup.find("h1", class_="Post-Title").text.strip()
body = soup.find("div", class_="Post-RichText").text.strip()

print("Title:", title)
print("Body:", body)

虽然说ChatGPT给出的代码可以执行,但它也提到由于爬取的网站会随时变更,也就是HTML会变动,所以代码可能需要调整才能正常工作。

凡是写过爬虫的同学应该都能理解,人工写的爬虫代码也没法一劳永逸,需要随时改。

这一点ChatGPT提示的很有道理。

后来我测试了medium、百家号上的文章,ChatGPT提供的代码形式几乎和上面一致,没法直接执行获取结果,需要微调后才能跑。

2. 爬取京东某商品的评论

为了给ChatGPT增加难度,我试着让它去爬取某电商网站的用户评论

提问:

请用python写代码爬取这个京东商品的所有用户评论  https://item.jd.com/13652780.html

ChatGPT:

可能这个网页是动态页面,ChatGPT提供的方法并不能爬取评论。

我接着问:

爬取的结果是空值怎么办?

ChatGPT:

ChatGPT提供了3种可能存在的原因,但并没有帮我修改代码。

于是我又问:

还是空值 请帮我重新写代码爬取

ChatGPT:

image.png

这次就牛掰了,它重新用Selenium写了爬虫代码,并告诉我爬取动态网页需要模拟浏览器行为,因此得用selenium技术。

我没有运行去测试代码正确与否,但ChatGPT确实惊艳到我了,能够前后关联对话内容,并给出正确的解决方法。

3.继续更多的测试

上面只是蜻蜓点水的玩玩,ChatGPT就已经吸引到我,

我准备多花时间去测试ChatGPT应对各种爬虫的解决方案,以及它对bug的修复能力。

仅仅从写代码层面看,ChatGPT已经可以媲美中高级程序员的水平了,而且它的知识范畴远超人类最厉害的程序员

ChatGPT能够根据对话生成人想要的内容,这是AI巨大的突破,未来它的应用之广难以想象。




    

GPT-4 发布!ChatGPT 大升级!太太太太强了!重磅!微软再扔AI聊天画图炸弹!图文版ChatGPT诞生了

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/152867