BLCL的博客小馆

标签 · 爬虫📢📢📢 阿里云双十一,2核2G3M的服务器,99元一年,新老用户续费同享!!

首页

关于

归档

loading..
爬虫大模型

一日一技:使用大模型实现全自动爬虫(一)

在文章一日一技:图文结合,大模型自动抓取列表页中,我提到可以使用大模型实现一个全自动爬虫。只需要输入起始URL加上需求,就可以借助模拟浏览器自动完成所有的抓取任务。在实现的过程中,我发现涉及到的知识点可能一篇文章讲不完,因此拆分成了多篇文章。爬虫演示今天是第一部分,我们暂时不依赖模拟浏览器,而是使用httpx(你也可以使用requests)实现全自动爬虫,传入我博客文章列表页,爬虫会自动抓取前三页所有博客文章的标题、正文、作者、发布时间。爬取结果如下图所示:运行过程如下图所示:爬虫首先会进入起始列表页,抓取上面的所有文章。然后进入列表页第二页,再抓取所有文章,最后进入第三页,再抓取所有文章。整个过程都是全自动的。不需要写任何XPath,也不需要告诉爬虫哪里是翻页按钮,文章的标题在哪里,发布时间在哪里,正文..

更多
loading..
爬虫大模型

一日一技:图文结合,大模型自动抓取列表页

熟悉我的同学都知道,GNE可以自动化提取任意文章页面的正文,专业版GnePro的准确率更是在13万个网站中达到了90%。但GNE一直不支持列表页的自动抓取。这是因为列表页的列表位置很难定义。例如下面这张图片:对人来说,要找到文章列表很简单,红色方框框住的部分就是我们需要的文章列表。但如果让程序自动根据HTML格式相似的规律来寻找列表页,它可能会提取出蓝色方框的位置、绿色方框的位置、灰色方框的位置,甚至导航栏。之前我也试过使用ChatGPT来提取文章列表,但效果并不理想。因为传给大模型HTML以后,他也不能知道这里面某个元素在浏览器打开以后,会出现什么位置。因此它本质上还是通过HTML找元素相似的规律来提取列表项目。那么其实没有解决我的根本问题,上图中的蓝色、绿色、灰色位置还是经常会提取到。前两天使用GLM..

更多
loading..
爬虫大模型

一日一技:如何使用大模型提高开发效率

前两天,有同学在微信群里面问怎么识别下图所示的验证码:一般爬虫验证码我会使用ddddocr来解析,在大模型出来之前,这个工具基本上是Python下面效果最好的免费验证码识别工具了。但是这次它翻车了。这个提问的同学也试过了很多个大模型,发现都提取不出来。甚至连GPT-4o也失败了:GPT-4o都失败了,还能怎么办呢?难道要使用付费的商业方案了?这个时候,突然有个同学发出来了一张截图:ChatGLM,也就是智谱AI,竟然识别对了!这个同学接着又发了一张图,另一个验证码识别又对了!甚至连四则运算验证码都能识别:这下整个群里面做爬虫的人都热闹了起来:于是就有了今天这篇文章。上面的截图是使用智谱AI网页版识别的,但是我们写代码时肯定需要使用API。智谱AI的大模型叫做GLM,也提供开放API服务。于是我到智谱AI ..

更多
loading..
爬虫ChatGPT

一日一技:真正的自然语言编程

在之前的文章《一次性数据抓取的万能方法,半自动抓取任意异步加载网站》中,我讲到一个万能的爬虫开发方法。从浏览器保存HAR文件,然后写Python代码解析HAR文件来抓取数据。但可能有同学连Python代码都不想写,他觉得还要学习haralyzer太累了,有没有什么办法,只需要说自然语言,就能解析HAR文件?最近我在测试open-interpreter,发现借助它,基本上已经可以实现自然语言编程的效果了。今天我们用小红书为例来介绍这个方法。如下图所示,我现在要抓取小红书首页游戏频道的帖子。通过不停往下滑动页面,我已经抓到了不少数据包。现在,把所有数据包保存为xiaohongshu.har文件(方法看我上一篇文章)。接下来,我们来安装open-interpreter,使用pip进行安装就可以了:pip ins..

更多
loading..
爬虫

一次性数据抓取的万能方法,半自动抓取任意异步加载网站

我们有时候临时需要抓取一批数据,数据不多,可能就几页,几百条数据。手动复制粘贴太麻烦,但目标网站又有比较强的反爬虫,请求有防重放的验证,写代码抓取也不方便。用模拟浏览器又觉得没必要,只用一次的爬虫,写起来很麻烦。例如,我经常逛色魔张大妈的精选好价页面。这个页面会列出各种折扣的信息。但它只能按大类筛选,无法用关键词搜索。如下图所示我打算只看前 10 页内容就好了。但一页一页看太麻烦了。有没有什么快速爬虫,把这个列表页的内容抓取下来呢?其实这种需求,使用半自动爬虫是最简单的。不需要考虑网站反爬虫的问题,因为你使用的就是真实的浏览器,不会通过代码来发起请求。而且这个列表页的内容都是异步加载的,直接在开发者工具可以看到数据包,数据包里面就有当前页面的全部内容。如下图所示:有没有什么办法,快速把这些数据包弄下来处理..

更多
loading..
爬虫大模型

一日一技:2秒抓取网页并转换为markdown

在《一日一技:自动提取任意信息的通用爬虫》这篇文章中,我提到可以通过大模型从网页内容里面提取结构化信息。为了节省Token,文章里面我直接提取了页面上的所有文本。这种方式需要自己写代码来过滤HTML中的垃圾标签。并且提取出来的文本可能会混在一起。虽然大模型在很大程度上不会受到标点符号的影响。但如果有办法把网页直接转换为Markdown的话,大模型在解析时就能更加准确。现在,你不需要写任何代码就可以实现这个目标!假设我们需要抓取我的这篇知乎专栏文章:小问题,大隐患:如何正确设置 Python 项目的入口文件?。我们知道知乎是有反爬虫的,直接抓取并不容易。怎么样在2秒内抓取这篇文章,并转换为Markdown呢?非常简单,你只需要在url前面加上https://r.jina.ai/并回车就可以了。完整的URL变..

更多
loading..
爬虫代理

一日一测:Bright Data的海外代理测试

上周的公众号文章提到了Bright Data提供的代理服务。没想到他们的运营同学竟然找上了门,问我能不能帮他们做一个评测。我之前使用Bright Data的代理,是因为突然有一天我的HuggingFace爬虫挂了。比较奇怪的是,这个爬虫在我电脑上始终正常运行,但一放到服务器上就请求失败。联想到HuggingFace被封了,而这个爬虫之前一直使用的国内代理供应商,那么原因就很明显了。因为我的电脑是24小时挂着梯子的,所以能够正常访问HuggineFace,但爬虫部署到服务器上面以后,他会自动使用配置好的国内代理。由于国内代理也受到GFW的影响,因此也会出问题。首先看一下Bright Data他们代理的基本功能,基于数据中心的隧道代理和基于住宅IP的隧道代理还有基于Sim卡的隧道代理。海外代理都是按流量收费的..

更多
loading..
爬虫ChatGPT通用爬虫

一日一技:自动提取任意信息的通用爬虫

使用过GNE的同学都知道,GNE虽然是通用爬虫,但只是文章类页面的通用爬虫。如果一个页面不是文章页,那么就无能为力了。随着ChatGPT引领的大语言模型时代到来,这个问题基本上已经不是问题了。我们先来看一个效果。首先打开Linkedin,随便找一个招聘的岗位,如下图所示:然后,我们直接使用GPT从这里提取信息:对应的Prompt为:12345你是一个数据提取小助手,能够从一大段招聘相关的文本中提取有用的信息并以JSON格式返回。{经过清洗的网页源代码或者文本}请从上面的文本中,提取招聘相关的信息,返回数据格式如下: {"title": "岗位名称", "full_time": "是否为全职", "employee_num": "雇员数量", "level": "岗位等级", "skill": "岗位需要的..

更多
loading..
爬虫Python通用爬虫

GnePro:文章类通用爬虫接口

GnePro是开源项目GNE的付费版,能够实现如下功能:输入任意文章页面的URL,返回标题/作者/正文/发布时间/图片/面包屑等一系列信息支持异步加载文章页提取支持上传自定义的HTML代码提取正文支持自动检测网页编码支持自动提取网页全部URL在8个国家13万个新闻类网站进行测试,准确率高达90%提取文章正文12345678910111213141516171819import requestsimport jsonurl = "https://crawler.kingname.info/gne/crawl"body = { "url": "https://www.kingname.info/2023/10/17/rubbish/", "js": False, "charset": "auto"}he..

更多
loading..
爬虫Python

一日一技:爬虫如何解析JavaScript Object?

我们在开发爬虫的过程中,经常发现有一些网站,会直接把数据放到HTML中的<script>标签里面。这些数据长得有点像JSON,但又有差异,如下图所示:这种格式,我们叫做JavaScript Object。长得很像Python的字典,又很像是JSON。但是这个格式在Python里面,无论直接当字典解析,还是当JSON解析,都会报错,如下图所示:遇到这种情况,有同学准备使用正则表达式来解析,又有同学直接放弃。但实际上,这种数据结构,使用Yaml是可以直接解析成Python的字典。我们首先来安装一下Yaml:1pip install pyyaml然后直接像解析JSON一样解析:12345678910import yamldata = '''{ name: '青南', salary: 99..

更多
12