美文网首页
Python - 3

Python - 3

作者: Ego_1973 | 来源:发表于2017-05-17 14:30 被阅读0次

    Python网页下载器

    注:本代码基于Mac下的PyCharm,Python2.7与Python3(mac自带一个,自己又安装了一个),PyCharm下载地址(官网):https://www.jetbrains.com/pycharm/download/#section=mac

    注册码需要到这个网站去获取:http://idea.lanyus.com
    如果mac下注册码不能使用:
    在终端输入:sudo vim /private/etc/hosts,然后会让你输入电脑密码,直接输入就好了(输入时终端里没有显示),然后会进到一个文件界面,然后点击i(插入),然后在文件夹中添加:0.0.0.0 account.jetbrains.com 这一句,然后shift+:wq保存一下

    想在PyCharm输入中文:

    Pycharm ----> File ----> Default setting ------> Editor -------> File Encodings;需要在文章开头增加 # coding:utf-8

    设置使用Python使用版本

    (我在此处使用的是2.7,在创建的时候选择一下)


    屏幕快照 2017-05-17 15.00.19.png
    本文语法:
      urllib2.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
     usr:数据路径,一般都为网址;
     data:参数(post提交数据时使用);
     proxies:设置代理
    
     urlopen 返回 一个类文件对象,它包含以下方法:
     read() , readline() , readlines() , fileno() , close()
     info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息;
     getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
     geturl():返回请求的url
    
     cookielib.CookieJar(): 用来保持cookies(eg:采集某个网站的登录信息)
    
    代码示例:
    # !user/bin/env python3
    # coding:utf-8
    
    import urllib2,cookielib
    
    url = "https://www.baidu.com"
    print('***One')
    responsel = urllib2.urlopen(url)
    print responsel.getcode()
    print len(responsel.read())
    
    print('***Two')
    request = urllib2.Request(url)
    request.add_header("user-agent","Mozilla/5.0")
    response2 = urllib2.urlopen(request)
     print response2.getcode()
     print len(response2.read())
    
     print('***Three')
     cj = cookielib.CookieJar()
    opener =         urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    urllib2.install_opener(opener)
    response3 = urllib2.urlopen(url)
    print response3.getcode()
    print cj
     print response3.read()
    

    打印为:

      ***One
         200
         227
    
      ***Two
        200
        227
    
    ***Three
       200
     <CookieJar[<Cookie      BIDUPSID=D96D25C9BB820406A577452D0C0D288A for .baidu.com/>, <Cookie PSTM=1494991402 for .baidu.com/>, <Cookie __bsi=14053390655258788841_00_31_N_N_55_0301_002F_N_N_N_0 for .www.baidu.com/>, <Cookie BD_NOT_HTTPS=1 for www.baidu.com/>]>
     <html>
      <head>
        <script>
           location.replace(location.href.replace("https://","http://"));
    </script>
    </head>
     <body>
    <noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
    </body>
    </html>
    

    /代码注释版/
    #coding=utf-8
    # urllib2下载网页

    法一:
    import urllib2
    response = urllib2.urlopen('http://www.baidu.com')
    print response.getcode()
    print len(response.read())
    
    法二: 添加data与head

    三个参数 url,data,header

     import urllib2
    request = urllib2.Request('http://www.baidu.com') #创建请求对象
    request.add_data('a')
    request.add_header('User-Agent','Mozilla/5.0')
    response = urllib2.urlopen(request) #发送请求
     print response.getcode()
    print len(response.read())
    
    法三: 添加特殊情景处理器
     import urllib2, cookielib
     cj = cookielib.CookieJar() #创建cookie容器
     handle = urllib2.HTTPCookieProcessor(cj) #创建一个handel
    opener = urllib2.build_opener(handle) #创建一个openner
    urllib2.install_opener(opener) #给urllib2安装openner
    response = urllib2.urlopen("http://www.baidu.com") #使用带有    cookie的urllib2访问网页
    print response.read()

    相关文章

      网友评论

          本文标题:Python - 3

          本文链接:https://www.haomeiwen.com/subject/wuhdxxtx.html