爬虫 urllib2

urllib2 python用来处理URL的模块,在爬虫中的功能就是打开URL来获取response(请求)网页的代码,然后我们可以通过对网页代码的操作来获取更多的东西。

 本文为学习笔记,希望大家指出错误和交流

1.response = urllib2.urlopen(url,[timeout])     (主要是这两个参数)

urlopen()是最基础的功能,url参数可以是一个链接url,也可以是一个请求request.    超时时间 timeout是一个可选参数。返回一个response对象。

response对象可以做以下操作:

response.read()  返回网页的内容

response.geturl()   获得所打开网页的url

response.info()    返回页面基本信息

response.getcode()   返回HTTP状态码。             200表示成功

此外可以添加代理,header等(不单单只能这样做):

response = urllib2.urlopen(url,proxy,header)

例如: response = urllib2.urlopen("http://www.baidu.com",{'https','183.74.89.16:8880'},{'User-agent','Mozilla/5.0'})

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2

url = "http://www.baidu.com"
response = urllib2.urlopen(url,timeout=5)
print("response.info():%s"%(response.info()))
print("response.geturl():%s"%(response.geturl()))
print("response.getcode():%s"%(response.getcode()))
print("response.read()[420:1000]:%s"%(response.read()[420:1000]))   #内容太多只输出一部分

2.request 请求。一般使用这个对象时是为了向request请求添加其他变量,如http header

request = urllib2.request(url)

request.add_header()       一般使用urllib2库,若不设置header,则默认显示为python的header ,一些网站会拒绝访问,假如加上某些浏览器的header则可以访问。

request.add_data()

request里的data需要以标准的方式encode   这时就需要   data = urllib2.urlencode()

3.OpenerDirector   可以看作是一个专门打开url的打开器。urllib2.urlopen()实际上是调用默认的opener,你可以对这个打开器进行个性化设置,可以更改代理,添加cookies等等。

opener = urllib2.build_opener(handler)    # 各种handler对应各种

#    opener = urllib.build_opener()    也可以这样

#    opener.add_handler(handler)

urllib2.install_opener(opener)  将自己设置的opener变成默认的opener(全局)。通常不用

response = opener.open(url)       #打开链接,返回响应

opener.addheaders()                #添加header

4.handler  处理器 。一些打开url时可能会需要的其他功能的组件

有很多,这里主要说三个:

1.urllib2.ProxyHandler()    代理重定向

1 proxyhandler = urllib.ProxyHandler(proxy)
2 
3 opener = urllib2.build_opener(proxyhandler)

 

这样就可以了

2.urllib2.HTTPCookieProcessor(cookie)  添加cookie.   这样可以用来打开某些需要登陆并且有验证码的url

1 cookiehandler = urllib.HTTPCookieProcessor(cookie)
2 
3 opener = urllib2.build_opener(cookiehandler)

 

3.urllib2.HTTPBasicAuthHandler(realm,url,user,password)    用来处理密码的

1 authhandler = urllib2.HTTPBasicAuthHandler()
2 
3 authhandler.add_password(realm,url,user,password)
4 
5 opener = urllib2.build_opener(authhandler)

 

posted @ 2017-10-15 20:38  过眼成灰  阅读(269)  评论(0编辑  收藏  举报