前几天同学问我,获取一个网站的资料是通过api调用好还是通过网络爬虫好,我说如果api可以满足需求那可以直接调api因为api是网站给你暴露的接口,客服端开发起来方便,并且返回的数据好解析,只要按他的规则来就应该没什么大的问题,不要考虑策略去获取最新的资料,可有个很大的问题就是通过api的调用完全受api服务器端限制,就和在中国上网一样,说哪个网站不上你上,那你通过合法的流程肯定是上不了的。
网络爬虫有个很大的好处,不太受服务器端的限制,你可以通过许多策略去绕过它,他们一般有以下可以做限制的:
1.通过ip限制。
2.通过cookie限制
3.通过加密算法加密请求的url
4.通过你请求的header限制
5.通过回答问题或验证码限制
6.欢迎补充
其中除了出现验证码,其他都可以破解,那我就简单介绍下我的策略吧!
对于单位时间访问过多,服务器端可能会给你的ip直接封死,有两个方法可以绕过这个规则,第一,给你请求的http设置代理,现在的代理ip比较多,不过要慢慢找,很多都不能使用。第二个方法:大部分人用的是adsl上网,那adsl有一个很好的优点就是ip不是固定的,所以重启下路由就可以换个新的ip了,不过要注意不要出现重启后还出现之前用的ip了!所以我们要给ip简单过滤下。
出现通过cookie限制的话,那你程序就一步一步的请求,最好不要跳步,如果用httpclient写的爬虫,那设置当请求时自动在请求体中加上cookie。
通过加密算法加密请求的url,那必须知道它的加密算法写在哪,比如说sina之前的邮箱加密算法写在js里面,并且比较复杂,那可以用java执行加密js生成结果,所以也不一定要搞懂它是怎么加密的,除非真正没其他办法,那只能看懂它的加密算法,再自己实现。
通过你请求的header限制是比较简单的限制,就是判断你请求的header是否符合要求,UA是否有,是否符合要求,host是否有......所以只要你请求时加上必要的header就行。
通过回答问题限制那就先好好分析它的问题,因为题库总是有限的,有点的题目本来就很简单,比如两数相加相减什么的,那可以用程序自动分析,自动执行。
最后有个最难的就是出现图片的一切验证,反正我是破解不了,那怎么办?一般出现验证码肯定影响用户体验,所以被抓去的网站肯定也不是很喜欢,但为了防止一些非法请求还必须加上,所以出现验证码的大部分都是有原因的,哈哈...有点夸张,所以我们按正规的流程走是不会出现验证码的,所以要把爬虫写得像人请求一样,那你就算成功了一大半了。
往往写网络爬虫要把几个策略一起使用,一点一点试服务器端的规则,绕过规则就是天堂。
转载请注明来自于:http://alexchan.iteye.com/blog/1512996
分享到:
相关推荐
### 简析搜索引擎中网络爬虫的搜索策略 #### 一、引言 随着互联网技术的迅猛发展,网络信息量急剧增加,人们获取信息的方式也在发生着根本性的转变。传统的方法已经无法满足用户对信息的需求,搜索引擎因此...
【简易Java网络爬虫】是一种基于Java编程语言实现的简单网络数据抓取工具,主要用于从趣配音的web页面上获取信息。在这个项目中,我们将会探讨如何构建一个基础的网络爬虫,涉及到的关键技术包括HTTP请求、HTML解析...
总结而言,本篇入门网络爬虫的精华文章覆盖了网络爬虫的基础知识,介绍了三个核心的工作版块,反爬虫策略的应对方法,并且简单提及了Scrapy框架。此外,还提供了进一步学习的资源参考。通过本篇内容,初学者可以快速...
在去重策略中,一个简单有效的方法是利用哈希表来记录已经爬取过的网页URL,以此来避免重复抓取。而从长远来看,网络爬虫技术的研究和发展,将对网络数据的挖掘与知识发现产生重要影响,为社会的发展提供知识支持。 ...
通过这门课程,学生将具备基础的网络爬虫开发能力,能够应对各种网页结构和反爬虫策略,为后续的数据分析和挖掘工作奠定坚实基础。同时,课程还将培养学生的实际操作能力和问题解决能力,使他们能够在实践中不断进步...
网络爬虫,也被称为网页蜘蛛或网络机器人,是自动化地浏览互联网并抓取信息的程序。在Java中,实现网络爬虫是一项常见的任务,尤其对于数据挖掘和数据分析领域。本文档资料将深入探讨如何利用Java语言来构建有效的...
文档"Java网络爬虫简单实现.doc"可能包含如何使用Java标准库中的HttpURLConnection或第三方库如Jsoup来抓取网页内容的示例。这些基础技巧是所有爬虫程序的起点,包括发送HTTP请求、解析HTML结构以及提取所需数据。 ...
Java简单网络爬虫是一种利用编程技术自动从互联网上抓取信息的程序。在这个项目中,我们专注于使用Java语言来创建一个基本的网络爬虫,它能够访问智联招聘网站,并提取出职位名称、公司名称、工作地点以及薪资等关键...
**1 设计目的** 网络爬虫是互联网信息获取的重要工具,其主要目的是自动化地抓取大量网页信息,为数据分析...通过这个课程设计,学生将具备构建简单网络爬虫的能力,并为将来从事更复杂的数据获取和分析工作奠定基础。
网络爬虫的抓取策略主要有三种:广度优先、深度优先和最佳优先。 1.3.1 广度优先搜索策略 广度优先策略首先抓取种子URL的直接邻居,然后是第二层,以此类推。这种方法适用于尽可能广泛地覆盖网页,但可能会下载大量...
通过学习以上知识点,读者可以具备编写简单至中等复杂度的网络爬虫的能力。随着经验积累,还可以深入学习更高级的主题,如分布式爬虫、数据清洗、机器学习等,进一步提升网络爬虫的效率和效果。
而一个完整的网络爬虫项目,往往需要结合多个工具和库,实现全面的功能,例如错误处理、请求调度、反反爬策略等。通过学习和实践这样的简单爬虫示例,我们可以逐步掌握网络爬虫技术,为进一步的数据获取和分析打下...
### Python网络爬虫技术知识点详解 #### 一、Python网络爬虫技术概览 ##### 1.1 网络爬虫概念与原理 - **定义**:网络爬虫(Web Crawler),也称为网页蜘蛛或自动索引器,是一种按照一定的规则自动地抓取互联网...
主题式网络爬虫技术可以大致分为广度优先搜索策略、最佳优先搜索策略和深度优先搜索策略。 广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。这种策略的设计和实现相对简单,但...
本文将重点讨论如何使用Java语言简单实现一个网络爬虫。 在Java中实现网络爬虫,我们通常会用到以下关键技术和库: 1. **HTTP通信库**:Java的`HttpURLConnection`类是基础的HTTP客户端接口,但实际开发中,我们更...
【Python网络爬虫讲义201808】是一份深入探讨高级网络爬虫技术的文档,由主讲老师赵俊编撰。本讲义不仅涵盖了基础的爬虫概念和实现,还针对网络爬虫可能遇到的问题和解决方案进行了详细阐述。通过实际案例,如豆瓣、...
这本书通过实践的方式,引导读者一步步构建自己的网络爬虫项目,涵盖了从基础的HTML解析到复杂的网页抓取策略。在阅读这本书的过程中,读者可以学习到如何使用Java进行网络编程,以及如何处理网络数据。 首先,我们...
首先,简单介绍下网络爬虫 网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,...
C#作为一种功能强大的编程语言,提供了丰富的库和工具,使得开发网络爬虫变得相对简单。本文将深入探讨使用C#进行网络爬虫开发的相关知识点。 1. **基础概念**: - **网络爬虫(Web Crawler)**:通过模拟浏览器...
### 基于Python网络爬虫毕业论文的关键知识点解析 #### 一、网络爬虫概述 网络爬虫(Web Crawler),又称网络蜘蛛或网络机器人,是一种按照一定规则自动抓取互联网上的信息的程序或者脚本。在大数据时代背景下,...