上周从零学习了golang,语法简单关键字少,写个爬虫熟悉一下语法结构。
首先选用了原生的net/http包,基本上涵盖了所有的get/post请求,各种参数都可以设置,网上google到html页面解析goquery神器,很轻松就可以解决页面解析问题。
首先就写了个爬取汇率的爬虫。然后重写之前php的一个请求类,请求类的逻辑有点混乱不清晰,往往把两个不同的功能合并到一起写,粒度大,后来发现了一个好用的框架——colly,之后再试试好不好用
Windows 10 Golang
依赖包:goquery
较常用的方法有Find和Each
爬取中国银行的汇率牌价表,golang依赖net/http包和goquery包
唯一的难点是对于goquery方法的使用,需要阅读官方文档:
https://godoc.org/github.com/PuerkitoBio/goquery
使用原生的net/http包基本上可以解决大多数的网页请求,使用goquery可以解决页面解析问题
可以利用golang的协程特性进行异步多协程爬取
增加安全性可以通过几个方面进行改进:
1.首先可以限制爬虫的爬取速度
2.每次对网页的请求都随机选用一个客户端
3.选用IP代理池,防止IP误封(及限制ip访问次数)
构造请求代理ip网站的链接→获取网页内容→ 提取网页中IP地址和端口号→验证IP的有效性并存储
轻量级反爬虫方案
浅谈JSP
golang带json的Http请求
Get/Post
HTTP请求中的Form Data和Request Payload的区别
HTTP Json请求
https://zhuanlan.zhihu.com/p/32825491
https://blog.csdn.net/yang731227/article/details/83900422
net/http: https://studygolang.com/articles/9467
golang HTTP操作
python建立爬虫代理ip池
爬虫黑科技之让你的爬虫程序更像人类用户的行为
特点:事件监听,通过callback执行事件处理
基于colly开发的web管理界面
1. 难在思路的构建
你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法、数据结构和 API 等进行编程实现。
2. 做出来容易,做好难
当你解决了思路构建的难点,解决了一个问题,但是你是否使用的最好的方法,这就是所谓的做出来容易,做好难。
写的程序能够解决问题且没有 bug 是基本要求。这里的做好不是指功能正确,而是写的程序容易理解,能够很容易让其他接手的程序员(水平不差)看懂为什么这么写。
正确是现在怎么写不会挖坑害将来的人,现在怎么写能让别人1年后看你代码时候不可能理解错你现在的意图,现在怎么写能在别人将来犯错的时候提示他你错了。
编程是给未来的未知人讲故事,你无法知道将来这个人是谁,他都懂什么,他经历过什么,这个系统将来已经是什么样子了。我们需要在这种无知,缺乏信息的情况下做决定,从千万种把这件事做出来的方法里,选出你觉得最能把这个故事给讲好的那种方式,把故事写下来。
编程是一种沟通,用程序跨越时空之沟通则是一门属于程序员的特有的艺术 —— 阿莱克西斯
3. 规范性好,有良好的可扩展性
并且程序的可扩展性,规范性高,后期维护难度小。整体功能实现的过程中,各种情况考虑规范。
其实学习编程和学习其他内容一样,没有什么太大差别。心态放好,用对方法,你就能够学好。重要的是学知识的人是什么样子,而不是学的是什么。
在这给你一些学习编程的建议,希望对你有用。
1. 让编程成为一个习惯
想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。
对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。
为自己设定一下,每周拿出几天,每天拿出几个小时,编程学习就这样慢慢步入正轨。
2. 将每天的学习过程拆分成小块
对待编程学习,我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时,我们完全可以先做40分钟、然后休息5分钟,整个过程重复4次。很明显。