想写代码,特别是爬虫代码,怎么学习?

网友解答: 不清楚你为什么想学习爬虫代码,可能是好奇或者是出于学习的目的吧。爬虫说的明白、清楚一点,就是解析网页,获取数据,后续就是数据处理的过程。目前来说,网上也有现成的爬虫软件,像八

网友解答:

不清楚你为什么想学习爬虫代码,可能是好奇或者是出于学习的目的吧。爬虫说的明白、清楚一点,就是解析网页,获取数据,后续就是数据处理的过程。目前来说,网上也有现成的爬虫软件,像八爪鱼,Forespider等,如果你急着爬取数据,而又不懂编程的话,这些软件你可以学学,官网都有详细的教程和例子,花费几个小时就能掌握。至于你想学习代码的话,目前主流的编程语言,像python,java,php,nodejs等都可以做爬虫,也有现成的包或框架,你直接使用就行,要学的内容主要如下:

1.熟悉基本的网页知识。像前端的html,css,js等,我们要爬去的数据大部分都存储在网页中,你需要对网页结构和基本标签有个基本了解,没必要熟练所掌握,大概看得明白就行,如果你还没有一点基础的话,建议花费个一两天时间学习一下,网上的教程很多,你可以学习一下,如菜鸟教程http://www.runoob.com/html/html-tutorial.html等:

2.再着就是要会使用浏览器的开发者工具,大部分情况下,网页的数据都是静态的,在网页源码中,但有些情况下,数据是异步加载的的,动态的,可能是一个json文件,这个时候你就需要会抓包分析,找到真实数据的URL,获取数据:

3.学一门编程语言。如果你没有基础的话,我建议学习python,简单易学,容易上手,开发效率高,生态环境良好,社区活跃,有大量的第三方包可以使用,像专门爬虫的包urllib,urllib2,requests等,都很好学,花个个把小时,你就会基本使用:

4.基本入门后,你就可以试着学习爬虫框架了,可以提高你的开发效率,不用重复造轮子,很快就能搭建一个爬虫系统,像python的scrapy框架等,其他语言也都会提供爬虫框架,你可以深入的学习一下,一定会对你有大的帮助:

我总结的就是这几点,我也才入门爬虫,学习的时间不长,主要是需要网上的数据做分析才学的,至于后面如何分析和处理数据,也才开始慢慢接触,只要你用心学习,多做个例子,多调试调试代码,很快就能掌握爬虫的,对于爬取网上大部分数据来说,绝对没有问题,希望以上分享的内容能对你有所帮助吧,可以共同探讨、学习。

网友解答:

想写代码,还是比较容易的,前提是学校学过编程,最好通过计算机二级,一般都没有问题。写代码,需要先确定自己要学的语言,而做爬虫相关的,几乎所有的网络编程语言都支持吧,就我接触的几种编程语言中,使用比较多的有Java、PHP、Python、Go等,而做爬虫,我在Java和Python编程语言方面有所实践,下面主要说说这两种编程语言在爬虫中的表现吧。

要做爬虫,Web开发的一些必备技术是不可或缺的,如HTML、CSS以及一些JS等,如果不懂这些,写爬虫就是个笑话。这些也是做爬虫的先决条件,要做爬虫,这些必须要学,并且有自己的学习心得。写爬虫需要先读懂目标网站的相关html源码,针对所爬取的内容决策获取的方式,常见的有正则表达式提取、Document元素获取等。

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler)聚焦网络爬虫(Focused Web Crawler)增量式网络爬虫(Incremental Web Crawler)深层网络爬虫(Deep Web Crawler)。 实际的网络爬虫系统通常是几种爬虫技术相结合实现的。

有了Web开发的基础之后,我们再来看看爬虫的事。我们先聊聊Java做爬虫的技术点,使用Java做爬虫,主要是通过HttpClient来实现的。使用HttpClient发送请求、接收响应很简单,一般需要如下几步:

创建HttpClient对象。

创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。释放连接。无论执行方法是否成功,都必须释放连接。

Java除了使用HttpClient做爬虫之外,还可以通过Jsoup,但是相对于HttpClient,在抓取上Jsoup比较弱,主要是使用扩展htmlparser的功能吧,解析html。相关的示例代码都可以在网上很容易找到,懂得一些Java基础和Web基础的读者都可以试试。

下面来聊聊Python在爬虫上的表现,Python标准库中,用于网页数据采集的有urllib库,同样,有很多优秀的开源库,像BeautifulSoup库、Requests库等。 目前我学Python做爬虫也处于初始阶段,使用过的库有标准库中的urllib、re库,非标准库中的bs4、selenium。由于刚开始实践,各方面认识还不够,在我的爬虫代码中urllib做网页数据采集用的,re是正则验证的库,使用bs4解析Document,比较简单的获取数据,我使用selenium自动打开浏览器,获取懒加载的图片之类的数据。除此之外,在网上还找到一些库,这些都是以后Python学习的方法,也推荐给各位。

功能齐全的爬虫grab – 网络爬虫框架(基于pycurl/multicur)。scrapy – 网络爬虫框架(基于twisted),不支持Python3。pyspider – 一个强大的爬虫系统。cola – 一个分布式爬虫框架。portia – 基于Scrapy的可视化爬虫。restkit – Python的HTTP资源工具包。它可以让你轻松地访问HTTP资源,并围绕它建立的对象。demiurge – 基于PyQuery的爬虫微框架。

总体而言,写爬虫Python比较清爽,有优势,Java就比较笨重,用Java写爬虫,有大炮打蚊子之嫌。而关于PHP和GO写爬虫只是听说过,本人没有这方面的实践,暂不多说。

作者:夕阳雨晴,欢迎关注我的酷米号:偶尔美文,主流Java,为你讲述不一样的码农生活。

标签: