您的位置: 首页 > 新闻资讯 > 正文

成为网络工程师需要懂得什么?

发布时间:2019-11-08 14:56:54 来源:

互联网时代,编程成为了很热门的学科,大学里有很多人想要从事互联网行业的工作。如果你想要成为一名编程工程师、爬虫工程师等等,你需要学习什么呢?下面让黑洞代理来跟大家简单介绍一下:

成为网络工程师需要懂得什么?

1、基本的编码基础(至少一门编程语言)

这个对于任何编程工作来说都是必须的。基础的数据结构您得会吧。数据名字和值得对应(字典),对一些url进行处理(列表)等等。事实上,掌握的越牢固越好,网络爬虫并不是一个简单的工作,也并不比其他工作对编程语言的要求更高。熟悉您用的编程语言,熟悉相关的框架和库永远是百益无害。

很多人主要用Python,用Java写网络爬虫的也有,理论上讲任何语言都还可以写网络爬虫的,不过最好选择一门相关的库多,开发迅速的语言。用C语言写肯定是自找苦吃了。

2、数据库

这个不用讲了,数据保存肯定要会数据库的。不过有时候一些小数据也还可以保存成json或者csv等。小编有时想抓一些图片就直接按照文件夹保存文件。

推荐使用NoSQL的数据库,比如mongodb,因为网络爬虫抓到的数据一般是都字段-值得对应,有些字段有的网站有有的网站没有,mongo在这方面比较灵活,况且网络爬虫抓取到的数据关系非常非常弱,很少会用到表与表的关系。

3、任务队列

当网络爬虫任务很大的时候,写一个程序跑下来是不合适的:

如果中间遇到错误停掉,重头再来?这不科学

我们怎么知道程序在哪里失败了?任务和任务之间不应该相互影响

而且如果有两台机器怎么分工?

所以我们需要一种任务队列,它的作用是:讲计划抓取的网页都放到任务队列里面去。然后worker从队列中拿出来一个一个执行,如果一个失败,记录一下,然后执行下一个。这样,worker就还可以一个接一个地执行下去。也增加了扩展性,几亿个任务放在队列里也没问题,有需要还可以增加worker,就像多一双亏筷子吃饭一样。

常用的任务队列有kafka,beanstalkd,celery等。

4、HTTP知识

HTTP知识是必备技能。因为要抓取的是网页,所以必须要了解网页啊。

首先html文档的解析方法要懂,比如子节点父节点,属性这些。我们看到的网页是五彩斑斓的,只不过是被浏览器处理了而已,原始的网页是由很多标签组成的。处理最好使用html的解析器,如果本人用正则匹配的话坑会很多。黑洞代理个倾向于xpath,跨语言,表达比价好,但是也有缺点,正则、逻辑判断有点别扭。

HTTP协议要理解。HTTP协议本身是无状态的,那么“登录”是怎么实现的?这就要求去了解一下session和cookies了。GET方法和POST方法的区别(事实上除了字面意思不一样没有任何区别)。

浏览器要熟练。网络爬虫的过程其实是模拟人类去浏览器数据的过程。所以浏览器是怎么访问一个网站的,您要学会去观察,怎么观察呢?Developer Tools!Chrome的Developer Tools提供了访问网站的一切信息。从traffic还可以看到所有发出去的请求。copy as curl功能还可以给您生成和浏览器请求完全一致的curl请求!打个比方,写一个网络爬虫的一般流程是这样的,先用浏览器访问,然后copy as curl看看有哪些header,cookies,然后用代码模拟出来这个请求,最后处理请求的结果保存下来。

5、运维

维护已经在工作的网络爬虫是一个繁重的工作。随着工作时间增加,一般大家都会学着让写出来的网络爬虫更好维护一些。比如网络爬虫的日志系统,数据量的统计等。将网络爬虫工程师和运维分开也不太合理,因为如果一个网络爬虫不工作了,那原因可能是要抓的网页更新了结构,也有可能出现在系统上,也有可能是当初开发网络爬虫的时候没发现反扒策略,上线之后出问题了,也可能是对方网站发现了您是网络爬虫把您封杀了,所以一般来说开发网络爬虫要兼顾运维。

网络编程看起来非常复杂,但是只要学习上手了,就能够慢慢一步一步走向精通。


相关文章内容简介

1 成为网络工程师需要懂得什么?

  互联网时代,编程成为了很热门的学科,大学里有很多人想要从事互联网行业的工作。如果你想要成为一名编程工程师、爬虫工程师等等,你需要学习什么呢?下面让黑洞代理来跟大家简单介绍一下:  1、基本的编码基础(至少一门编程语言)  这个对于任何编程工作来说都是必须的。基础的数据结构您得会吧。数据名字和值得对应(字典),对一些url进行... [阅读全文]