如何用ChatGPT抓取网站数据
ChatGPT的爆火再次证明了数据的价值。它之所以如此博学多才的原因就是爬取了互联网上千千万万的数据并训练成了一个大语言模型。人工智能时代,谁掌握了有价值的数据,谁就有话语权。
对于普通人而言,我们每天也在接触数据。当我们要做某项决策,比如行业调研,往往要先获取大量的数据并进行分析。这是一个数据驱动的时代。
ChatGPT出现语言,爬取大量数据往往需要掌握编程技能,比如Python就是非常流行的用于数据抓取和分析的编程语言。然而有了ChatGPT以后,不懂代码的人也可以通过跟ChatGPT对话完成复杂的数据抓取任务。
本文将通过实际案例详细说明如何用ChatGPT抓取网站的数据,让我们开始吧。
用ChatGPT抓取数据的先决条件
抓取网站数据需要联网。众所周知,没有插件的 ChatGPT 是无法联网的。要使用 ChatGPT 的插件,首先要成为ChatGPT的Plus用户。成为Plus用户有以下好处:
- 即使在高峰期也能获得流畅的访问体验
- 使用更高能力的GPT-4
- 优先体验ChatGPT的最新功能
- 安装插件商店的任意一款插件
如果你已经是 ChatGPT Plus 会员,但是不知道如何安装下文要介绍的插件,可以看我这篇文章:
接下来我要爬取一个经常被作为爬虫教学的网站,它总共有10页,每一页都有若干名人名言。
我给ChatGPT的任务是:爬取每一页的名人名言,并把名言、作者以及标签的数据存储到一张表格里。下面我将介绍两种方法,第一种适合小型的项目,第二种适合大型的项目。
使用 Scraper ChatGPT 插件
激活了ChatGPT的插件功能以后,打开插件商店并搜索”scraper”。
找到这个插件以后,点击”Install”按钮进行安装。我已经安装好了,所以显示的是”Uninstall”。
激活了 Scraper 插件,我提交了如下Prompt给ChatGPT:
请抓取网站 http://quotes.toscrape.com/,并从每个页面获取以下信息:页码、名言、名言作者、标签。此外,请通过 “下一页 “按钮导航到下一页,并重复该过程。获取所有数据后,请将其整理成表格格式。请以表格形式提供最终输出结果,而不要解释过程中涉及的步骤。
Please scrape the website http://quotes.toscrape.com/ and retrieve the following information from each page: page number, quote, quotee, tags. Additionally, please navigate to the next page by locating the next button and repeat the process. Once you have scraped all the data, please organize it in a table format. Please provide the final output as tables without explaining the steps involved in the process.
在这个Prompt里,我首先告诉 ChatGPT 要爬取的网站以及要保存的字段。并告诉ChatGPT要点击下一页并重复这个过程。因为要爬取的数据很多,而ChatGPT的输出是有字数限制的,所以我让ChatGPT只输出表格,不要解释完成任务的过程。
最终ChatGPT生成了100行的表格,由于字数限制,它分成了3-4次才输出了完整的表格,但是我只需要在它停顿时点击继续按钮就好了。下图显示了完整的输出。
如果输出的数据比较少,你可以直接复制粘贴到Excel里面,还可以配合其他能够输出 CSV 表格的插件,比如 A+ Doc Maker 或者 CSV Exporter 直接把结果保存到一个 CSV 文件里。
但是我要输出的数据超过了这两个插件所能承受的限度,无法生成 CSV 。
所有我就用了在线转换的工具把它转化为 CSV 表格。
使用 Noteable ChatGPT 插件
之前我写了一篇文章专门介绍如何使用 Noteable 进行数据分析,其实它也是爬取网站的利器,特别是对于大型的爬虫项目。
还是像之前安装 Scrape 插件那样在插件商店里搜索 “noteable”,找到以后点击 “Install” 进行安装。
安装以后,会弹出一个登录的界面。创建一个免费的账户并登录以后,你就拥有了一个Noteable的云空间。这个云空间独立于ChatGPT,ChatGPT输出的所有代码和文件都存在你的云空间里。因此你不需要像上面介绍的方法那样先输出 Markdown 表格,再转化成 Excel 或者 CSV。
因此这个方法适用于大型项目。想象以下如果你要爬取几万行的数据,输出到ChatGPT的话一定会超过它的字数限制,迫使ChatGPT必须分多次才能输出。
而 Noteable 是直接帮你写好了代码,通过代码直接爬取网站,并把数据直接生成你想要的文件。
我把上面的任务交给 Noteable 去执行,提交了如下 Prompt:
创建一个名为 “Web Scraper” 的项目,并抓取网站 http://quotes.toscrape.com/。从每个页面获取以下信息:页码、引用、被引用者、标签。此外,请通过定位到下一个按钮导航到下一个页面,并重复该过程。获取所有数据后,请将其整理成表格格式并保存为 “quotes.xlsx”。
Create a project call “Web Scraper” and scrape the website http://quotes.toscrape.com/. Retrieve the following information from each page: page number, quote, quotee, tags. Additionally, please navigate to the next page by locating the next button and repeat the process. Once you have scraped all the data, please organize it in a table format and save it as “quotes.xlsx”.
Noteable 是按照项目来组织你的任务的,一个项目包含了代码和文件。当我让 ChatGPT 帮我创建一个名为 “Web Scrape” 的项目时,它就在 Noteable 的云空间里生成了。
当ChatGPT完成任务后,就看见项目里有两个文件。web_scraper.py
是 ChatGPT 帮我自动生成的一个笔记本,记录了爬虫的代码。
quotes.xlsx
是从网站上爬取的数据。直接在 Noteable 里面就可以下载。
如果这个网站有几万页,Noteable 处理起来也很快,因为它的计算资源是独立于 ChatGPT 之外的。并且如果你成为 Noteable 的付费用户以后,还可以使用更高配置的计算资源:
- Medium: 2 vCPU, 7.5 GB 内存
- Large: 4 vCPU, 15.0 GB 内存
- Extra Large: 7.5 vCPU, 29.0 GB 内存
- Small (GPU): 2 vCPU, 10.0 GB 内存
- Medium (GPU): 6 vCPU, 26.0 GB 内存
总结
本文介绍的两种方法各有优劣。
使用 Scrape ChatGPT 插件简单快捷,不需要另外注册第三方平台的账号,所有的操作都在 ChatGPT 中进行。 但是它受限于 ChatGPT 本身的字数限制,目前无法配合其他插件直接把大量的数据输出到文件。
使用 Noteable 可以摆脱 ChatGPT 的限制,把爬取的大量数据直接以文件的形式保存在 Noteable 平台里,但是你需要创建一个免费 Noteable 的账号,并且要在 Noteable 平台进行一些基础操作。
但是不管怎么说,ChatGPT 降低了爬取网站数据的门槛,使得不懂代码的人也可以通过人类的自然语言能力就能轻松爬取海量数据。原先爬取网站过程中你需要通过代码指定元素的位置,比如翻页按钮,或者要爬取的字段的位置。现在,只需要告诉 ChatGPT 你要的字段并且执行翻页,它就可以智能识别元素所在的位置,这简直太方便了。