BLCL的博客小馆

归档 · 2023

首页

关于

归档

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..

更多
loading..
Python爬虫

一日一技:HTML里面提取的JSON怎么解析不了?

我们在开发爬虫的过程中,经常发现有一些网站,会直接把数据以JSON的形式,通过<script>标签放到页面源代码中。如下图所示:有时候请求URL拿到HTML的过程比较麻烦,有些同学习惯先把HTML复制到代码里面,先把解析的逻辑写好,然后再去开发请求HTML的代码。这个思路本身是没有什么问题的,于是他们就写了如下的代码:代码中的html_data = '''里面就是原样复制的网页HTML,没有做任何修改,因为太长了,我这里做了折叠。展开以后如下图所示:但当运行这段代码的时候,发现代码报错了,如下图所示:看这个报错信息,难道说是JSON本身有问题?于是,你到网页上,把这个JSON复制下来:使用JSONHero这种验证网站,进行验证,结果发现一切正常:这就见鬼了,为什么正则表达式提取的JSON就不对..

更多
VPSPVEESXi

自建实体服务器

Foreword 打算自建服务器,完成一些内部的测试和使用,有些东西也需要内部验证,一些管理软件也都需要一个内部平台。 硬件选型 成本考虑,1手最新服务器买不起,所以上个老服务器,能用就行了,水平其实差不多的。 机柜 Dell R7525 CPU 7H12*2 内存 64G*12 硬盘 7.68T*1 阵列卡H745卡 电源 双电2400w 价格26760 不含税 系统虚拟化 有了硬件基础以后,还需要一个好用的系统方便做虚拟化,想折腾就上PVE,想稳定就用ESXi PVE PVE,全称Proxmox Virtual Environment,虚拟机内核是KVM,主要还是Linux系统,扩展能力很强,对应要求操作的人也很高 ESXi ESXi是VMWare旗下..

更多
loading..
spark

Spark create function 逻辑

问题来源函数注册成功, 但是在调用的时候提示无法加载对应的类.结论spark 创建函数的时候并不会直接去加载对应的资源/类, 只有在使用时才会加载对应的资源和类, 因此创建成功并不能代表能正常使用hive 创建函数的时候会去加载对应的类, 所以创建成功即代表可用spark-sql 测试create temp func 和 create func 的区别12CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ] function_name AS class_name [ resource_locations ]从语法上都是, 创建一个自定义函数, 只是前者注册的是临时函数, 只在当前 Session 有效. 后者注册的函数是永久函数..

更多
stdout

浏览器拉起钉钉客户端并跳转OA工单

又是 corporate software engineering 吃屎的一天。用户在内部系统走流程,厂里用的是钉钉自带的OA工单审批。已经接入了API创建、完成工单 问题在于发起工单之后,用户并没有感知,不知道工单去哪里了,流程就断了,向钉钉官方售后发起咨询,对方丢了一句:不支持。无语 只能自己鼓捣。已知工单链接,在钉钉聊天窗口内部的最短的网址为: https://aflow.dingtalk.com/dingtalk/mobile/homepage.htm?corpid=...&procInstId=...#approval 对方丢了一个 dingtalk:// 跳转协议 反复尝试,发现一个很有用: 桌面端打开URL dingtalk://dingtalkclient/page/li..

更多
shellbashzsh

安装并使用zsh

首先我们安装zsh,并切换默认的shell为zsh,之后重启进入zshsudo apt-get install zshchsh -s /bin/zshsudo shutdown -r now之后我们安装oh-my-zsh,因为网络的原因所以设置了代理wget -e https_proxy=192.168.65.100:7890 https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.shchmod +x install.sh./install.sh然后再安装zsh命令自动补全插件zsh-autosuggestionsgit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH..

更多
stdout

SVG放在 img 中不能加载图片/字体

最近想在 markdown 里搞图文混排,遇到一个大图把版面占完了,想缩小一些,由于 .md 渲染器安全限制,没法直接指定宽高 只能从图片本身想办法,首先最直接的手段就是服务器再缩放一次,但是蛋痛的问题是缩放之后文件怎么存,怎么给静态文件路由,怎么保障图片可用性,怎么兼容各种尺寸,想想都头大。 想到一个 hack,要不直接放一个 .svg 进去,因为 svg 支持加载位图资源,所以把 svg 位图缩小一点,让浏览器渲染 svg 不就行了。 没想到就被这个 hack 坑了。原因是 svg 如果被 <img> 标签渲染,那么禁止加载任何外部资源,脚本也禁止执行。 为了证明这个限制,我写了个 demo 放在 https://lab.est.im/shit_svg/ 这个问题太隐蔽了。stackove..

更多
loading..
Python爬虫

一日一技:Requests被网站识别怎么办?

现在有很多网站,已经能够通过JA3或者其他指纹信息,来识别你的请求是不是Requests发起的。这种情况下,你无论怎么改Headers还是代理,都没有任何意义。我之前写过一篇文章:Python如何突破JA3,但方法非常复杂,很多初学者表示上手有难度。那么今天我来一个更简单的方法,只需要修改两行代码。并且不仅能过JA3,还能过Akamai。先来看一段代码:123456789101112131415161718192021import requests headers = { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/s..

更多
loading..

My nvim config in 2023

Start 在去年我曾经写过一篇 2022 年的 nvim 配置方案的博文,那篇文章实际上是本博客访问量最高的,随着时间来到了 2023 年的下半年,nvim 社区也有了新的变化,而随着 packer 插件管理器正式宣布放弃维护,我也不得不投身到了 lazy 的怀抱,然后说一句,真香! 简单统计了下我使用的插件数量,不知不觉间也来到了 60+,在插件选择,配置上也有了更多自己的想法,增删并定制了特性, 根据我平时编码时的习惯,常用的开发语言做了针对性的优化和设置,在这里分享出来供各位参考。 组织良好的配置目录 针对 HHKB 键盘的优化 手动 LS(language server) 管理 采用 nord 作为统一的颜色风格 便于扩展 话不多说,本文的内容如果对你有启发的话,那就最好不过了!仓库地址在文..

更多
12