Python优雅去除list中空字符串
简介
运行环境 Runtime environment123操作系统: Windos10 IDE: webStrom 2021.3.1 x64 语言: Python 3.9.1
需求今日,因公司爬虫采集需要,做数据湖初步清洗时,经常会碰到一类问题。
需要给去除python列表中那些空的元素,比如:None,””,’’等等
处理方式,确实多种多样,很多都是for循环直接完事儿。
不过,我有一妙法与诸位分享。
代码假如存在一个列表:
your_list = [1,2,41,41,51,51,””,None,’’]
执行如下语句
1filter(None, your_list)
总结空字符串 会被程序判定为 False
filter(None, your_list), None代表不输入函数,也就是
[x for x in your_list if x]
利用Python的原生函数filter,可以轻松实现对列表元素的过滤。
亦可以结合lambda函数,进行较复杂的处理。
Python列表中删除重复的字典
我有一个字典列表,我想删除具有相同键和值对的字典。Python列表中删除重复的字典,记录一下解决办法。
运行环境 Runtime environment123操作系统: Windos10 IDE: webStrom 2021.3.1 x64 语言: Python 3.9.1
需求某日,在B站直播间,采集黑名单的名录,保存的时候,有了一个需求。
黑名单禁言时间是有时间限制的,禁言到期以后,黑名单就会自动消失。
那定时采集黑名单保存更新的时候就必然会出现名单重复的情况。
所以,为列表中重复的字典进行去重。
需求示例列表:[{‘a’: 123}, {‘b’: 123}, {‘a’: 123}]
希望达到的效果:[{‘a’: 123}, {‘b’: 123}]
另一个例子:
列表:[{‘a’: 123, ‘b’: 1234}, {‘a’: 3222, ‘b’: 1234}, {‘a’: 123, ‘b’: 1234}]
希望达到的效果:[{‘a’: 123, ‘b’: 1234}, {‘a’: 3222, ‘b’: 1234}]
代码试过,都说好。
1[dict(t) for t ...
Web前端:meta标签的拓展
最近通过meta标签控制referrer策略的应用后,想深入了解meta标签
元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。
标签位于文档的头部,不包含任何内容。
标签的属性定义了与文档相关联的名称/值对。
运行环境 Runtime environment123操作系统: Windos10 IDE: webStrom 2021.3.1 x64 语言: HTML
定义 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。
标签位于文档的头部,不包含任何内容。
标签的属性定义了与文档相关联的名称/值对。
HTML 与 XHTML 之间的差异在 HTML 中, 标签没有结束标签。
在 XHTML 中, 标签必须被正确地关闭。即:
提示和注释注释: 标签永远位于 head 元素内部。
注释:元数据总是以名称/值的形式被成对传递的。
属性和值的用法必须属性name 属性name 属性提供了名称/值对中的名称。HTML 和 XHTML 标签都没有 ...
Web前端:referrer策略的认识
爬虫采集中,请求头字段,对它较为熟悉,但是在html的meta标签中,亦不知道Referrer如何应用。
Referrer,是一种引用策略,可以用来防止图片或视频被盗。
它的原理是:http 协议中,如果从一个网页跳到另一个网页,http 头字段里面会带个 Referrer。
图片服务器通过检测 Referrer 是否来自规定域名,来进行防盗链。
如果没有设置referrer,那就可以直接绕过防盗链机制,直接使用或盗取。
运行环境 Runtime environment123操作系统: Windos10 IDE: webStrom 2021.3.1 x64 语言: HTML
referrer 的值
no-referrer:所有请求不发送 referrer。
no-referrer-when-downgrade(默认值):当请求安全级别下降时不发送 referrer。目前,只有一种情况会发生安全级别下降,即从 HTTPS 到 HTTP。HTTPS 到 HTTP 的资源引用和链接跳转都不会发送 referrer。
same-origin:对于同源的链接和引用,会发送refe ...
小技能GET:如何提高网页的加载速度?
更换掉了用了三年的hexo主题,
处于某些美观强迫症,会加一堆图片。
导致网页加载速度,慢过预期。
此时,又想起之前尝试用ffmpeg切片加快在线视频播放的事情,
于是,就想好好去查查资料,整理一下关于如何优化网页加载速度的方案。
运行环境 Runtime environment1操作系统: Windos10
运维层面
尽可能的将html,js,css部署到cbn服务器上
开启etag或者过期时间,以便浏览器端尽可能的使用缓存
开启http的gzip压缩
开启http/2开启HSTS以便让上一条总是生效
开启 http concat静态资源使用不同的域名,以便减少cookie体积
web前端开发层面的优化
代码丑化(压缩)
图片矢量化,比如icon font,svg等
js和css的http请求合并。(注意开启了http/2的时候,不要滥用,让浏览器充分发挥它的缓存特性)
雪碧图(精灵)
调整加载顺序,先html,后css,最后js使用服务器端预渲染技术
图片懒加载
内容分页加载或懒加载
最后四条优化的是用户感知层面上的速度,其中最后三条甚至会增加网络传输的总数据量, ...
疑难杂症:解决Hexo博客引用网络图片无法显示
某日,更新博客主题,为了优化图片的加载速度。
决定使用B站作为图床,通过引用图片链接的方式,
来达到优化博客图片的目的。
结果发现图片无法显示。
运行环境 Runtime environment12345操作系统: Windos10 IDE: webStrom 2021.3.1 x64 语言: nodeJs v14.15.4框架: hexo "5.3.0"theme: [Butterfly "3.6.1"]
症状bilibili上的图片地址,都是以此域名开头
https://i0.hdslb.com
按F12,通过浏览器开发工具可以看出。
在外链引用图片链接的时候,凡是这个地址的图片都会403。
1https://i0.hdslb.com/bfs/album/89cad6a27ea92985a463342334b0933be8d843e2.jpg
但是使用其他图床的图片地址,图片能够正常显示。
问题原因经过对比,初步认定bilibili的图床做了防盗链。
Hexo 博客在引用图片链接的时候可能携带了refer的请求头。
照着这 ...
疑难杂症:nodejs警告:found 3 vulnerabilities (2 low, 1 high)
运行环境 Runtime environment12345操作系统: Windos10 IDE: webStrom 2021.3.1 x64 语言: nodeJs v14.15.4框架: hexo "5.3.0"theme: [Butterfly "3.6.1"]
症状提示警告
found 3 vulnerabilities (2 low, 1 high)
解决办法主要看最后的信息提示
12found 3 vulnerabilities (2 low, 1 high) run `npm audit fix` to fix them, or `npm audit` for details
按照提示输入命令
npm audit fix
npm audit fix –force
npm audit
小技能GET:使用Rclone挂载GoogleDriver团队盘到Ubuntu
想搞一份大盘机!Rclone是真的牛辟!
运行环境 Runtime environment123操作系统: ubuntu18.04 IDE: JetBrains Pycharm 2019.2.4 x64 语言: Python 3.7.4
背景想把申请到的googleDriver团队盘挂载到自己的VPS上去,达到扩容的和文件管理的目的。
全文唯一的难点只有Rclone创建remote,只是步骤多一点,但是并不复杂和难。
像我这种浮躁又怕麻烦的人都能搞定,相信很多人都能搞定。
安装Rclone使用官方的安装脚本文件
curl https://rclone.org/install.sh | bash
输入命令,测试安装是否成功
rclone
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657Usage: rclone [flags] rclone [command]Available Commands: abou ...
Python:使用urllib.parse操作和解析URL
URL就是个字符串,用正则处理是个不错的方案,但是urllib.parse使用起来可以更加简洁快速..
运行环境 Runtime environment123操作系统: Windos10 IDE: JetBrains Pycharm 2020.2.4 x64 语言: Python 3.7.4
背景爬虫里面要处理URL以便发出新的请求,web后端开发也要对URL处理类似跳转,入库等,总会用得着。
URL就是个字符串,用正则处理是个不错的方案,但是urllib.parse使用起来可以更加简洁快速..
快速的对URL拼接、拆分,组装,甚至判定URL是否合法等。
code在输入的 URL 中如果有用户名和密码,
则可以用属性名 username 和 password 来获取它们,
如果没有,那么相应的属性的取值为 None 。
属性 hostname 的值与属性 netloc 的值相同,
只不过去掉了端口号,并且都是小写形式。
如果还有端口,
则属性 port 的值被转换为一个整数,
如果没有,属性的值就是 None 。
1234567891011121314from url ...
小技能GET:正则表达式非获取匹配的用法
别再瞎(.*?)了,活用一下正则吧
运行环境 Runtime environment1操作系统: win10
背景进来在开发爬虫的时候,使用正则清洗部分数据时,
有些数据不需要匹配,但是它却会一定的变化,影响某些需要的数据的匹配。
于是,又深入了一下正则表达式
非获取匹配的用法
RE
描述
(?:pattern)
非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern)
非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 ...