谢乾坤 | Kingname

给时光以生命。

产品经理这两天在跟我抱怨他们公司的一个码农。听的我火冒三丈,差点把跟了我十多年的搪瓷水杯砸烂。

正好在知识星球和微信群里面,有不少同学跟我咨询程序员的职业发展以及怎么应对三十岁危机。

借此机会,我准备用几篇文章来讲讲自己的经验和个人的观点。

阅读全文 »

我们知道,在Python里面,要把JSON转成字典是非常容易的,只需要使用json.loads(JSON字符串)就可以了。

但如果这个JSON转成的字典,嵌套比较深,那么要读取里面的数据就非常麻烦了。如下图所示:

如果我要读取把图中的end减去start字段,那么用字典的时候,代码要写成这样:

1
result = info['data'][0]['entities']['annotations'][0]['end'] - info['data'][0]['entities']['annotations'][0]['start']

光是看到这些方括号和单引号,就够让人头晕了。

阅读全文 »

相信很多同学或多或少都在Python中使用过GPT API,通过Python安装openai库,来调用GPT模型。

OpenAI官方文档中给出了一个示例,如下图所示:


如果你只有一个API账号,那么你可能不觉得这样写有什么问题。但如果你想同时使用两个账号怎么办?

阅读全文 »

在之前很长一段时间,从PDF文件中提取表格都是一个老大难的问题。无论你使用的是PyPDF2还是其他什么第三方库,提取出来的表格都会变成纯文本,难以二次利用。

但现在好消息来了,专业处理PDF的第三方库PyMuPDF升级到了1.23.0,已经支持完美提取PDF中的表格了。还可以把表格转换为Pandas的DataFrame供你分析。

阅读全文 »

我们知道,在使用Requests发起GET请求时,可以通过params参数来传递URL参数,让Requests在背后帮你把URL拼接完整。例如下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 实际需要请求的url参数为:
# https://www.kingname.info/article?id=1&doc=2&xx=3

import requests

params = {
'id': '1',
'doc': '2',
'xx': '3'
}

requests.get('https://www.kingname.info/article', params=params)

那么在Scrapy中,发起GET请求时,应该怎么写才能实现这种效果呢?

阅读全文 »

有不少同学在写爬虫时,会使用Scrapy + scrapy_redis实现分布式爬虫。不过scrapy_redis最近几年更新已经越来越少,有一种廉颇老矣的感觉。Scrapy的很多更新,scrapy_redis已经跟不上了。

阅读全文 »

目前市面上没有任何方法能够完全避免你的程序被人反编译。即便是3A游戏大作,发布出来没多久也会被人破解。现在只能做到增大反编译的难度,让程序相对无法那么快被破解。

我们知道,Python代码默认是公开的。当你要把一个Python项目给别人运行的时候,一般来说别人就能看到你的全部源代码。我们可以使用Cython、Nuitka对代码进行打包,编译成.so文件、.dll文件或者是可执行文件,从而在一定程度上避免别人看到你的源代码。我在字节的时候,内部的一个系统就是使用Cython打包的,然后部署到客户的服务器上。

阅读全文 »

最近遇到一个需求,需要抓取Docusaurus上面的全部文档。如下图所示:

抓文档的正文非常简单,使用GNE高级版,只要有URL直接就能抓取下来,如下图所示:

但现在的问题是,我怎么获取到每一篇文档的URL?

阅读全文 »

写过爬虫的同学都知道,当我们想对App或者小程序进行抓包时,最常用的工具是Charles、Fiddler或者MimtProxy。但这些软件用起来非常复杂。特别是当你花了一两个小时把这些软件搞定的时候,别人只用了15分钟就已经手动把需要的数据抄写完成了。

我的需求

如果你不是专业的爬虫开发者,那么大多数时候你的抓包需求都是很小的需求,手动操作也不是不能。这种时候,我们最需要的是一种简单快捷的,毫不费力的方法来解放双手。

例如我最近在玩《塞尔达传说——王国之泪》,我有一个小需求,就是想找到防御力最大的帽子、衣服和裤子来混搭。这些数据,在一个叫做『Jump』的App上面全都有,如下图所示:

防具总共也就几十个,肉眼一个一个看也没问题,就是费点时间而已。那么,如果我想高效一些,有没有什么简单办法通过抓包再加上Python写几行代码来筛选,快速找到我想要的数据呢?

阅读全文 »
0%