一次性数据抓取的万能方法,半自动抓取任意异步加载网站
我们有时候临时需要抓取一批数据,数据不多,可能就几页,几百条数据。手动复制粘贴太麻烦,但目标网站又有比较强的反爬虫,请求有防重放的验证,写代码抓取也不方便。用模拟浏览器又觉得没必要,只用一次的爬虫,写起来很麻烦。
我们有时候临时需要抓取一批数据,数据不多,可能就几页,几百条数据。手动复制粘贴太麻烦,但目标网站又有比较强的反爬虫,请求有防重放的验证,写代码抓取也不方便。用模拟浏览器又觉得没必要,只用一次的爬虫,写起来很麻烦。
我经常逛Github Trend,看看每天有没有什么高级的开源项目出来。有时候发现一个项目非常好,想跟开发者交流。
一般情况下,开发者会在Github主页留下自己的联系邮箱,如下图所示,这是我的Github个人主页:
但有的开发者却不会留邮箱,如下图所示:
这种情况下,怎么联系上这个开发者呢?你可以直接发Issue,但是这样其他人就能看到你发的消息。其实还有一个更简单隐蔽的方法,可以直接拿到这个开发者的邮箱。
首先,在这个开发者的Repo中,随便找一条Commit记录,如下图所示:
这个Commit对应的URL是:https://github.com/didi/xiaoju-survey/commit/3dc15aeb688f04dfdf69f0f46b0f66902303f92d
。
现在,只需要在这个URL的末尾加上.patch
,变成https://github.com/didi/xiaoju-survey/commit/3dc15aeb688f04dfdf69f0f46b0f66902303f92d.patch
,就可以看到纯文本形式的Commit记录。而开发者的邮箱地址就在上面,如下图所示:
有时候,我们需要使用多行字符串配合format
格式化函数来生成Markdown文本。例如,我现在开发了一个AI对话机器人,我发送一个txt文件过去,他首先帮我总结整个文件的内容,然后以问答的形式列出10个要点。
我们知道,Python里面,json.dumps
是序列化操作,json.loads
是反序列化操作。当我使用json.dumps
把一个字典转换为字符串以后,也可以使用json.loads
把这个字符串转换为字典。
那么,有没有可能出现这样的情况:某个字典,使用json.dumps
转换成了字符串s
。但是当我使用json.loads(s)
时,却会报错?
利益不相关声明,今天介绍的所有工具,都跟我没有任何软文合作,也没有金钱往来。我在这篇文章里面对他们做介绍仅仅是因为他们对我确实非常有用。
最近几个月,国产大模型相继推出了自己的 App,这些 App 不仅可进行 AI 对话,还能提供各种智能工具。谈论AI对话功能的文章太多了,我就不赘述了。今天聊聊他们的其他功能。不可否认,国产大模型比国外的大模型差了不少,但我一向秉持重器轻用的观点,我不管这些App提供了多少功能,我只看它里面有没有功能适合我,即便它提供了100个功能,我可能只会使用它其中一个适合我的功能。
最近大家都在说LLama3如何如何强大,追赶Claude3,超过GPT 4。但如果大家真的使用过,就会发现它连基本的中文都回答不好。如下图所示:LLama3总是尽可能回复英文,并且还会加很多表情符号。
在《一日一技:自动提取任意信息的通用爬虫》这篇文章中,我提到可以通过大模型从网页内容里面提取结构化信息。为了节省Token,文章里面我直接提取了页面上的所有文本。
如果你使用macOS,想看上面某个软件使用什么技术开发的。那么你可以使用这个方法。它对普通人来说可能没什么用。如果你本来就做macOS软件开发,那么这个方法可能会很有用。
首先,我们知道macOS上面,安装的软件一般都放在/Applications/
或者~/Applications
文件夹里面。这里我以阿里网盘为例。
我最近在使用一个第三方库,叫做RapidFuzz
。它有一个工具函数,叫做utils.default_process
,在官方文档里面,是这样介绍的:
红色方框里面说,这个函数可以移除所有的非alphanumeric
字符。如果我们使用翻译软件,会发现alphanumeric
的意思是字母和数字。如下图所示:
因此,我想当然的觉得,这个功能函数,只会保留26个英文字母的大小写加上10个数字,一共62个字符。把除此之外的所有其他字符都移除掉。