技术的进步总是与需求密切相关,需求的指挥棒指到哪里,我们的行动就在哪里。
在过去的2021年,技术上的进步最大的莫过于爬虫了。
在年中的时候,接到了一个关于舆情数据获取的系统需求。由于人手不够,就被安排来做这个事情。刚接到这个任务,心里也是没底的,因为之前的技术栈一直是在C#上面,对Python语言只是轻描淡写的看过那么几眼,更不用说爬虫了。不过,既然事情来了,硬着头皮也得上。
因为之前有其他语言的基础,再加上需求要的也比较着急,也没顾上深入系统的学习python语言,就是需求能用上啥就学啥。边学边改,持续了大概半年,到年底第二版的系统终于上线了。
下面就挑一些重点的内容,介绍一些我学习爬虫的一点心路历程:
爬虫首选的库的当然是request库,首选的框架当然是scrapy了,如果要调用浏览器那就得是用selenium框架了爬虫下来的数据处理用的比较多的是numpy和pandas反爬技术上,UA伪装是最基本的。最简单的做法,就是把浏览器的请求信息直接拷贝到你的源码中,基本上可以应对大部分的网站反爬。应对反爬时,referer和host这两个要留意一下,这里边记录了是从那个页面跳转到这个网站的,反爬时很有用。在网页翻页上,有些网站的总页数是作为json文件的一个属性给出的,根据每页的项目数,就可以推出总页数;有些网站,你可能需要借助selenium去解析与下一页相关的页面元素,判断是否还有下一页。解析网页基本上就是xpath,在浏览器上配置一个XPATH helper插件,实时验证,很nice。在使用scrapy进行爬虫时,如果你只是应用,了解好爬虫的框架即可。这个框架的好处是,代码的复用性比较好,严格按照框架的结构填写你的功能代码,开发效率要比request快,而且爬虫运行起来也更稳定。但是,scrapy有一个神坑就是,我开发的系统只能在本机上运行,转移到其他计算机就完蛋,这一点如果有高手知道如何处理可以指点一下。(ps:有人建议我使用容器化技术,还没试,后面有空再琢磨琢磨)界面设计上,我刚开始想用C#的 IronPython 折腾几天,老大不满意,后来就改用QT了。QT学习的也比较浅,就是使用设计器把界面拉好,然后就用qss参考别人的模板设计了样式表,效果还不错。
总的来说,对于scrapy框架,了解其框架原理,知道代码应该写在哪儿,就够用了;对于QT框架,我的建议是先找一个参考的界面,用设计器拉好,剩余的用qss美化就OK。这里是本着实用主义的理念,那些看不上使用QT设计器的大佬,莫怪。我的一些经验都写在python网络爬虫笔记这个专栏里了。
2022年来了,又要搞事情了。老大想搞移动开发,又得转战安卓了;先是使用AS+Java搞,搞得不多,简单总结了几篇文章Android开发笔记;后来又想着多端,转到mui-app和uni-app了,就靠一个hbuilderX和mumu模拟器闯天下,这里我的经验总结muiapp开发。
技术人总是要与需求共生,从需求中获得成长的。希望,未来一年能够折腾出来一个像样的app。