把玩之python爬虫urllib2

32 篇文章 0 订阅

原文链接:静觅 » 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值