把玩之python爬虫urllib2

来源:互联网 发布:演技最烂的演员知乎 编辑:程序博客网 时间:2024/05/07 02:02

原文链接:静觅 » Python爬虫入门三之Urllib库的基本使用

1,什么是urllib2库?

        urllib2是python的一个获取URLs的组件,通过urlopen函数的形式来提供了一个非常简单的接口,根据不同协议获取URLs的能力,urllib2提供了一个比较复
杂的接口来处理情况,例如:基础验证,cookies,代理和其他。
        我们分析代码:
               
response=urllib2.urlopen("http://www.baidu.com")


        首先,我们调用的是urllib2库中的urlopen方法,传入了一个链接,协议是HTTP协议,同样我们可以把HTTP协议换成FTP协议,FILE,HTTPS等,只是代表一>种访问协议。
        urlopen一般接受三个参数:1,url。2,data,即为访问URL时要传送的数据。3,timeout,即为超时时间。第二、三个参数可以采用默认,data默认为空,timeout默认为socket._GLOBAL_DEFAULT_TIMEOUT.第一个参数必须有的。

 
               print response.read()


        response对象有一个read()方法,用来获得链接网页中的所有内容。
        注意:大多数时候,我们构造Request类的实例,传入上面的urlopen。构造Request时需要传入Url,Data等等内容。如以上代码可以改写为:
 
       request=urllib2.Request("http://www.baidu.com")        response=urllib2.urlopen(request)        print response.read()


        目前大多数情况下我们需要在访问时通过传递数据,意识目标网页做出响应。比如:登录注册
        数据传递有两种方式:POST和GET
        我们知道两者之间的区别是GET是通过链接来传递数据(参数),而POST是隐式的传递数据而不通过链接传递。
        POST方式:
 
               import urllib                import urllib2                value={"username":"1357200562@qq.com","password":"123"}                data=urllib.urlencode(value)                request=urllib2.Request("http://password.csdn.net....",data)                response=urllib2.urlopen(request)                print response.read()



        有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器上。默认的urllib2把自己作为“Python-urllib/x.y”(x和y是python主版本和次版本号)。  这个身份让站点感到迷惑,或者干脆不工作。而浏览器则不同,浏览器确认自己的身份是通过User-Agent头,当你创建一个请求对象,你就
可以给他一个包含头数据的字典。如下:

        import urllib        import urllib2        url="http://...."        user-agent="Mozilla/4.0....."        values={"name":"bob","location":"pythontab","language":"Python"}        headers={"User-Agent":user-agent}        data=urllib.urlencode(values)        request=urllib2.Rquest(url,data,headers)        response=urllib2.urlopen(request)        print response.read()        GET方式:        import urllib        import urllib2        values={}        values["username"]="1357200562@qq.com"        values["password"]="123"        data=urllib.urlencode(values)        url="http://...."        user-agent="Mozilla/4.0...."        headers={"User-Agent":user-agent}        geturl=url+"?"+data        request=urllib2.Request(geturl,headers)        response=urllib2.urlopen(request)        print response.read()      


0 0
原创粉丝点击