只需要按照3个步骤,就可以使用ChatGPT代码解释器从网站提取数据。
在之前的文章中,我向您展示了如何使用ChatGPT和ChatGPT的插件“Scraper”来抓取网站。这些都是不错的方法,但也存在一些限制和缺点。
但是,ChatGPT代码解释器将网络抓取提升到了一个不同的层次。
在本文中,我们将探讨如何使用ChatGPT代码解释器自动化网络抓取。
要使用ChatGPT代码解释器抓取网站,我们需要上传目标网站的HTML文件。
为此,访问目标网站并按CTRL+S,并将文件保存为HTML。
假设我想提取Amazon上的电视价格。我只需要访问Amazon并输入“TVs”。
然后我按CTRL+S,下面的窗口就会弹出。确保你将文件保存为HTML。
这个HTML文件包含了Amazon网站的所有数据。现在我们需要使用代码解释器上传该文件。
现在我们需要转到ChatGPT,选择GPT-4,然后点击“Code Interpreter”。
代码解释器只对ChatGPT Plus订阅者开放。如果你还没有启用它,可以按照此指南中的步骤激活它。
现在你应该在聊天栏中看到一个加号按钮。点击它上传HTML文件。
然后我们需要使用以下提示来提取数据并导出到CSV文件:
从HTML文件中提取产品名称和价格,将数据放在表格中,并导出到CSV文件。
前面的提示有时就足够了,但为了使提示更为健壮,我们需要指定我们的数据所在的HTML元素。
为此,访问目标网站,找到你想提取的数据(在这种情况下,是产品的名称和价格),然后右键点击它并选择“检查”。
开发者工具将弹出,并高亮显示包含你希望提取的数据的HTML元素,复制蓝色高亮的元素。
这是我复制的元素:
<span class="a-size-medium a-color-base a-text-normal">Introducing Amazon Fire TV 40" 2-Series 1080p HD smart TV, stream live TV without cable</span>
如果你重复这个步骤对价格进行操作,你会得到如下面的元素:
<span class="a-price-whole">189<span class="a-price-decimal">.</span></span>
现在,如果你有过抓取网站的经验,你可能知道总会有数据缺失,所以我们必须在我们的提示中处理这种情况。
这是我们将要使用的最后的提示:
从HTML文件中提取产品名称和价格,将数据放在表格中,并导出到CSV文件。
这是一个产品的元素:
<span class="a-size-medium a-color-base a-text-normal">Introducing Amazon Fire TV 40" 2-Series 1080p HD smart TV, stream live TV without cable</span>
这是价格的元素:
<span class="a-price-whole">189<span class="a-price-decimal">.</span></span>
如果产品的价格缺失,请将该价格作为空数据。
在给ChatGPT发出提示后,我得到了我请求的表格的预览和下载CSV文件的链接。
注意:仔细检查你的CSV文件。有时,ChatGPT会复制其他行的数据,而不是将空数据作为一个空单元格。如果是这种情况,你需要使用下面的提示:
有些产品(如LG 55-Inch Class UQ7570 Series 4K Smart TV, AI-Powered 4K, Cloud Gaming (55UQ7570PUJ, 2022)没有价格,您错误地将其他产品的价格指定给了它。您能解决这个问题并告诉我哪些产品没有价格吗?
那还不是全部!你可以通过提供新的HTML文件来抓取第2、3、4...页
到目前为止,我们抓取了Amazon的第一页,但还有其他页有更多的数据。要抓取所有页面,我们需要转到我们想要的页面,并将其保存为HTML。
然后我们上传这个新的HTML文件,并使用下面的提示。
这是前面网站的第[n]页。使用HTML文件提取数据,按照我之前描述的相同步骤。
这是我下载的CSV文件的一部分。
附加内容:使用略有不同的方法抓取Glassdoor
假设我们想抓取Glassdoor上的职位发布信息。我们将遵循相同的步骤。
首先,我们会访问Glassdoor,搜索我们想要的职位,然后按CTRL+S将页面保存为HTML。然后我们检查想要提取的数据,但现在我们不是复制蓝色高亮的整个元素,而是选择一个属性。在这种情况下,我会选择id。
我检查的元素的id是“job-title-1008760392125”。这可以简化为“job-title”。如果我们重复对岗位的雇主、地点和薪资的处理,我们会构建下面的提示:
从HTML文件中,查找下列ids的元素并提取其数据
job-employer
job-title
job-location
job-salary
将数据放在表格中,并导出到CSV文件。如果有缺失的数据,将其作为空数据。
现在你可能会收到下面的消息。
这是因为我们通过移除数字来缩短“job-title-1008760392125”,所以id的名称并不完整。因此我们必须告诉ChatGPT使用正则表达式匹配id名称的部分:
这些是ids的一部分,使用正则表达式匹配id名称的部分
然后我们得到了我们的数据!
加入社群,领取福利: