IP只是你在访问的时候,通讯协议里面的某一字段,你有技术能力的话,可以伪装,但也很容易被查出来
因为现代的防封,已经不是一两招的套路了,别的不说COOKIE,就算是你这个请求是从哪个基站出来的,都会给你判断
我们能做的,就是踩着灰色线的基础上,尽量让你的请求像人工
爬虫简介
爬虫:一段自动抓取互联网信息的程序。
什么意思呢?
互联网是由各种各样的网页组成。每一个网页对应一个URL,而URL的页面上又有很多指向其他页面的URL。这种URL之间相互的指向关系就形成了一个网络,这就是互联网。
正常情况下就是我们采用人工点击的方式,去获取互联网上指定的信息,这种方式的特点是覆盖面小。
那有没有可能有一种方式,是当我们设定了一个互联网上感兴趣的目标,然后自动地从互联网上去获取我们所需要的数据呢?
有,这就是爬虫。它可以从一个URL出发访问该URL所关联的所有URL,并且从每个页面上提取出我们所需要的价值数据。
也就是说,爬虫就是自动访问互联网,并且提取数据的程序。
目录
爬虫技术的价值
互联网数据,为我所用。
Python简单爬虫架构
1)首先,我们需要一个爬虫调度端。爬虫调度端的作用:启动爬虫,停止爬虫,监视爬虫运行情况。
2)在爬虫程序中有三个模块:URL管理器、网页下载器、网页解析器。
3)URL管理器:对将要爬取的和已经爬取过的URL进行管理;可取出待爬取的URL,将其传送给“网页下载器”。
4)网页下载器:将URL指定的网页下载,存储成一个字符串,在传送给“网页解析器”。
5)网页解析器:解析网页可解析出
①有价值的数据
②另一方面,每个网页都包含有指向其他网页的URL,解析出来后可补充进“URL管理器”
此时,这三个模块就形成了一个循环,只要有感兴趣的URL,这三个模块就会一直循环下去。
Python简单爬虫架构的动态运行流程(以时序图的方式展示)
Python爬虫URL管理
URL管理器:管理待抓取URL集合和已抓取URL集合。
目的:防止重复抓取、防止循环抓取。
Python爬虫URL管理器的实现方式
Python爬虫URL管理器的实现方式具体有三种:
1)使用内存,在Python中主要使用set集合(方便去除重复的元素)
2)使用关系数据库,使用两个字段:url和is_crawled(用来标记是否被爬取)
3)使用缓存数据库,同样使用set集合
其中,大型公司一般选择高性能的缓存数据库。个人,小公司一般使用内存。若是想永久存储,常使用关系数据库。
Python爬虫网页下载器简介
网页下载器:一个工具,通过URL将互联网上对应的的网页以HTML的形式下载到本地存储成本地文件或内存字符串,后进行后续处理;
Python有哪几种网页下载器:urllib2(Python官方模块,基础模块)、requests(第三方模块,功能强大)。
Python爬虫urlib2下载器网页的三种方法
1)urllib2下载网页方法1:最简洁方法
将url直接传给urllib2的urlopen()方法。
对应代码:
2)urllib2下载网页方法2:除url外,添加data、http header。
进行增强处理。
其中,data向服务器提交需要用户输入的数据。
http header用来向服务器提交http的头信息。
对应代码:
代码中request.add_data(a,1) #添加的数据类型为键值对,即a=1。
request.add_header() #可以对url请求进行伪装
3)urllib2下载网页方法3:添加特殊情景的处理器
更大更强的功能处理能力。
对应代码(举例:增强cookie的处理)
Python爬虫urlib2实例代码演示
import urllib2, cookielib url ="http://www.baidu.com" print 第一种方法 respones1 = urllib2.urlopen(url) print respones1.getcode() print len(respones1.read())print "第二种方法" request = urllib2.Request(url) request.add_header("user-agent","Mozillla/5.0") respones2 = urllib2.urlopen(request) print respones2.getcode() print len(respones2.read())print 第三种方法 cj =cookielib.CookieJar() opener = urllib2.bulid_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) print respones3.getcode() print cj print respones3.read()
Python爬虫网页解析器简介
网页解析器:从网页中提取有价值数据的工具。
功能:
1)提取出新的待爬取URL列表;
2)解析出有价值的数据:
网页解析器会以下载好的html网页字符串作为输入,提取出有价值的数据以及新的待爬取的URL列表。
Python有哪些网页解析器呢?
1)正则表达式。最直观的一种。将网页文档down成一个字符串,采用模糊匹配的方式进行提取有价值的数据。虽然直观,但是当网页文档十分复杂的时候,这种方式将十分复杂。
2)使用Python自带的html.parser模块进行解析。
3)使用Beautiful Soup这个第三方插件来解析网页。功能强大的Beautiful Soup可以用html.parser或者lxml作为它的解析器。
4)使用lxml这个第三方插件来解析html网页或者xml文档。
结构化解析——DOM(DOcument Object Model)树
BeautifulSoup第三方模块
安装BeautifulSoup:
如果你安装了pip,那么就简单了,无需从官网下载,打开命令提示符页面。
进入到Python安装目录下的Scripts文件夹路径下,输入“pip install beautifulsoup4”,即可进行自动安装。
安装完,在eclipse中进行测试,新建一个Python模块,输入:
import bs4 print bs4
输出为:
证明安装成功。
BeautifulSoup的语法
其中搜索节点的find_all()方法可以搜索出所有符合要求的节点,而find()方法则只是搜索出符合条件的第一个节点。但是两个函数的参数是完全相同的。
对应代码:
1)创建BeautifulSoup对象
2)搜索节点(find_all、find)
其中红色部分为正则表达式形式。
最后一句之所以"class_"要加上下划线是因为要和Python的关键字"class"进行区分。
3)访问节点信息
对于爬虫用户而言,网站的反爬机制能够算是他们的头号敌人。反爬机制是为了防止爬虫爬取数据过于频繁,给服务器造成过重的负担导致服务器崩溃而设置的机制,它其实也有几种不同的方式,下边我们就来说说。
1.通过UA机制识别爬虫。
UA的全称是UserAgent,它是请求浏览器的身份标志,许多网站使用它来作为鉴别爬虫的标志,假如访问请求的头部中没有带UA那么就会被判定为爬虫,但由于这种要针对这种反爬虫机制非常容易,即随机UA,因此这种反爬机制使用的很少。
2.通过访问频率鉴别爬虫。
爬虫为了更好地保证效率,通常会在很短的时间内多次访问目标网站,因此能够通过单个IP访问的频率来判断是否为爬虫。并且,这种反爬方式比较难以被反反爬机制反制,只能通过更换代理IP来保证效率。
3.通过Cookie和验证码识别爬虫。
Cookie是指会员制的账号密码登陆验证,这就可以通过限制单账号抓取频率来限制爬虫抓取,而验证码完全是随机的,爬虫脚本无法正确鉴别,同样能够限制爬虫程序。
以上便是一些反爬机制的方式,爬虫用户在碰到时就需要找寻相应的反反爬机制来应对。
一般IP代理需要服务器架设才能使用,架设好后才能使用。一般而言,不存在免费,因为租用服务器是要花钱的,再就是安装IP代理需要技术,因此,市场上一般都是很少有免费的,但也不排除,一些好人,愿意来做免费的,让广大网友免费使用,再就是一般品牌商前期推广期间都会给客户免费使用,但是这一切都是有时间性的,不可能永远免费,记住一句话,天下没有免费的午餐,那么,免费代理IP有哪些安全隐患呢?一、安全无保障二、泄露个人登录信息在使用免费代理IP登录网站时,由于是免费代理,安全性和隐私性不能得到保证,很有可能会被个人有心人记录下来,甚至个人信息也会被利用和出售。1.利用了Cookies。通过免费的代理IP,服务器可以记录信息,你的cookies很容易被其他人利用。IP免费代理没有维护人员,一旦出现问题也无从解决。三、收到的资料不安全。所有接收到的信息都是通过免费代理服务器转发的,如果伪造钓鱼网站,就会对网站造成一定的威胁。四、信息传输不安全。当我们传输数据时,它也会首先进入代理服务器,然后中转出去。若有人在代理服务器上安装抓取包,将会获得我们的信息,并破解您的密码。容易受牵连发帖的人都知道,偶尔我们的频繁操作可能会被网站的实时监控系统限定,提醒被限定发帖的人,本来是有IP限制的,此时应用代理ip,替换成IP再发一次。但应用免费的IP是共享的,其他人也在使用,容易受到牵连,造成IP被封,帐号被封。IP可用率低对免费代理IP来说,稳定性和可用率是他们最大的问题,你必须花费大量的时间精力去筛选合适的IP资源,如果你要求大量的IP资源,那么工作效率将大大降低。可见免费代理IP的性价比实际上并不高。如果大家想测试可以试试 下面的这个,速度快, 稳定性强,高匿安全,现在有活动, 注册送10000免费ip
代理云 - 优质企业级代理ipconsole.v4.dailiyun.com/user/?channel=jyy-wtnewconsole.v4.dailiyun.com/user/?channel=jyy-wtnewconsole.v4.dailiyun.com/user/?channel=jyy-wtnewconsole.v4.dailiyun.com/user/?channel=jyy-wtnewconsole.v4.dailiyun.com/user/?channel=jyy-wtnewconsole.v4.dailiyun.com/user/?channel=jyy-wtnewconsole.v4.dailiyun.com/user/?channel=jyy-wtnew根据个人经验,简单的反爬虫技术有:
1. 判断headers 中的参数,比如user-agent 不是浏览器的不允许访问;refer 不是来源于特定域名的也不行(反盗链常用技术)。这是最常见的反爬虫技术。
2. cookies 检查用户cookies,需要登录的网站常采用这种技术。比如论坛、微博、雪球等。
以上两个可以通过手动设计headers 和cookies 搞定,python 程序员使用requests 可以很方便解决。还有一些比较复杂的技术:
1. 数据通过ajax 返回后通过js 混淆处理,而js 处理过程可以写的很复杂,以至于爬虫程序员没法分析。
2. 数据通过flash 和服务器端交互。 例如船讯网http://www.shipxy.com 中请求船舶信息部分。
3. 通过ip 或者特定账号单位时间内请求数量来限制访问,基本无解,比如你爬爬 google scholar 试试看