(一)刚入爬虫坑(2)——urllib.request库的使用(2)

在(一)刚入爬虫坑(2)——urllib.request库的使用(1) 中介绍了user-agent可以模拟成浏览器发送请求,也提到了代理、使用cookies可以模拟登录状态与服务器通信,这节主要研究一下。


做爬虫程序的时候,最怕的就是被封IP,为了保证本机IP不被封禁,选择使用代理IP的形式访问服务器。

urlopen()可以发送请求,可以使用user-agent,但是不能使用代理,cookie等功能。

需要通过Handler处理器对象,设置代理IP,然后进行访问。

Handler处理器对象和opener对象:

        从urllib.request的urlopen()源码中可以看到,其实urlopen运行的是一个特殊的opener对象,是已经被构建好的。大致过程是通过build_opener()方法使用Handler创建的处理器对象,创建自定义的opener对象。使用opener对象,调用open()方法发送请求。

        下面就自定义一个简单的opener对象:

        上面这个opener对象也不能处理代理IP的问题,所以我们需要使用其他的Handler,完成使用代理IP的目的:

这个里面的IP估计已经是不能用了,可以到西刺代理去找,碰碰运气

            上面代码使用代理IP的范围是固定的,如果这些IP都不能用了,只能去更改代码里面的IP列表,换一批能用的,这就很麻烦了。

            解决这个问题,我们可以使用阿布云的代理IP,为了测试,买一个一元钱的就OK了。

这个里面的账户和密码估计已经失效了,可以到阿布云代理去购买一个动态的IP,每次HTTP请求的IP都不一样,  相当于IP池

Cookie的使用:

        有一些网站是需要登录状态才能继续浏览数据,例如一些社交网站,或者有一些搜索引擎也有限制,不登录只能浏览部分数据,这个就需要用到cookie来搞定这个步骤。现在就用人人网做个例子,先登录获得cookie,然后用cookie跳过其他页面的登录验证:

先使用POST登录获得登陆之后的信息,然后在带着信息访问其他页面,就可以跳过登录验证,如果没有发送post请求获得cookie,则无效

你可能感兴趣的:((一)刚入爬虫坑(2)——urllib.request库的使用(2))