前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一知:自学爬虫的求职建议

一日一知:自学爬虫的求职建议

作者头像
青南
发布2022-04-07 19:18:49
9071
发布2022-04-07 19:18:49
举报
文章被收录于专栏:未闻Code

一、发展建议

前几天有一位知识星球中的同学讲了他目前的状况,希望咨询一些未来发展的问题,感觉应该和许多想要去好一点大公司的求职者有一些共性建议:这位同学目前是专升本,专科大三下半年在小公司实习过,从专科大三实习到去年9月入学现在的本科学校,期间一直在兼职接单,做过很多项目,自己也有一直在学习,但是学习的很散(基础的东西很薄弱、知识体系很散东一点、西一点),目前希望能够去一个好点的大公司。对大项目架构、设计模式什么的一窍不通。app 大多数JAVA层的都能解决,so层算法还原不行,只能frida-rpc,web 可以解决少部分加密,风控解决不了只会普通的用iP去怼。

发展建议:其实这位同学的逆向能力已经可以打败很多人了。现在要让大公司的人知道有他这号人,然后让他们主动联系他。多写文章,这样有两个好处。第一,写文章的过程会逐渐让你的知识系统化。第二,方便大公司的人通过文章找到你。

算法不好不一定吃亏,但是数据结构不好一定会吃亏。基本的几个数据结构一定要学好:链表、二叉树、堆、栈、队列的特性要了然于心,并能徒手写出完整的代码。单向链表,双向链表,双指针法,三指针法吃透,就会做一大批的算法题了。二叉树的前序遍历,中序遍历,后序遍历要能做到给出任意两种就能在纸上还原二叉树。小顶堆,大顶堆搞懂,就会做一大批有很大数据量,需要筛选或者排序的题目了。

二、问题解答

1

南哥,用Scrapy将日志通过settings的LOG_FILE写入文件了但是控制台不输出了,有什么办法让控制台也输出么?

scrapy使用的是logging模块。这是Python自带的模块。你只需要再加一个StreamHandler就可以了

2

南哥好,我最近遇到了一个问题,我从网上采集的信息抽象如下:

代码语言:javascript
复制
[{
    'url': ' https://example.com/1'
    'keywords': ['a', 'b', 'c']
},
{
    'url': ' https://example.com/1'
    'keywords': ['a', 'b']
}]

支持当我想反查`keyword`中的`a`出现在哪些`url`时,现在的做法是有三个表,有url表和keyword表,还有一个关联表一一对应,想问问又没有更好的处理方法呢?

mongodb查询array的时候,跟查普通的字段一样:

代码语言:javascript
复制
.find({'keywords': 'a'})

这样就能了。然后你直接读url字段,就是你想要的效果了

3

南哥,平时安装软件的时候,如果需要管理员权限的话会弹出来UAC窗口让人确认,这个功能用python怎么实现啊?

网址:windows - Request UAC elevation from within a Python script? - Stack Overflow

4

南哥请教一个问题也,就是我有一个新闻网站,第一次爬取需要爬取历史数据所以需要翻很几百页,之后我只需要监控前面几页就行了,有新增的新闻我就爬取!这个需要怎么设计啊?

第一次手动跑就好了。后面自动跑,监控到重复数据就停止

5

南哥,请教一个问题:为什么 Unicode会存在大小端序呢 有什么作用吗?

大端和小端是由CPU架构决定的,一般x86架构和大部分arm架构的CPU都是小端。我们知道一个字节是8位,数据在计算机里面有信息量的最小单位是字节(因为位太小了,没有什么信息量)。Unicode码本质上是一串十六进制数,我们假设它是0xa1b2。16进制数每两个一组放在一个字节中。也就是a1放在一个字节,b2放在另一个字节。左边叫做高位,右边叫做低位。内存里面,每个字节的空间都是有内存地址的,地址从低到高。如果低地址的内存放高位数据a1,高地址的内存放低位数据b2,这就的大端。如果低位地址放低位数据b2,高地址放高位数据a1,这就的小端。这种东西编程语言都会帮我们处理好,其实你不用太关心它。

6

南哥,请教一下,Python 多线程场景下,有没有方法在主线程中,主动让某个子线程结束运行?

不行。子线程没有办法被杀死。只能让它自己结束。你可以在子线程里面弄一个while循环。它的结束条件通过主线程来设定。这样子线程看到这个结束条件为True就自动结束。但无论如何,子线程只能自己结束,没有办法从外面杀死。

7

南哥,有啥比较好的方法,复制一台服务器的python环境到其他机器。尝试过conda的导出环境命令conda env export --no-builds > environment.yml,但是生成的文件去其他服务器安装时,会报很多库找不到对应的版本。docker不适用于我的需求,我是想复制环境给其他服务器,仅仅复制python环境。直接拷贝文件这种方式不能满足需求

实际上对Python来说,就不应该有“把整个环境复制到另一个服务器”这种操作。只有把当前环境里面的第三方库的名字记录下来,再到另一个环境重新安装。如果你用过virtualenv或者pipenv。那么这个过程几乎不耗费时间。一条命令就重建好了。但我怀疑你肯定是把所有的第三方库全部都安装到了系统Python环境里面。

至于你说有些库在新服务器上安装不了。那你在老服务器是怎么安装的?难道新老服务器的系统不一样?有一些第三方库依赖一些系统软件,这些系统软件需要使用apt提前安装。

8

南哥,关于git hooks,我想在一个项目的不同分支启用不同的钩子,这有什么办法做到吗?用的是本地的git

代码语言:javascript
复制
if [ `git rev-parse --abbrev-ref HEAD` == "development" ]; then
   echo "development-script"
南哥,请问httpx这个模块,不能设置Proxy-Authorization 请求头的呢?好像selenium也不能设置这个头,设置了好像请求的时候会被去掉?

可以设置,官方文档还有例子。https://www.python-httpx.org/advanced/

你是怎么设置的,把代码发上来。使用httpx的时候,其实代理的权限信息可以直接写到代理url上面,不需要设置头信息。http://账号:密码@ip:端口

比如说这样子,设置的proxy-authorization变成[secure],请求的时候这个头也看不到。设置的proxy-authorization1就有。

用requests的时候,这个字段在不在?

requests也不行,proxy-authorization情书头也被过滤了

那我觉得是httpbin的问题。你应该用Charles来检查。

这样看看发出去是有proxy-authorization这个字段的是吗?

是的

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档