zoukankan      html  css  js  c++  java
  • 爬虫-urllib的使用(2)

    import urllib.request
    import json
    
    
    # 接收一个字符串作为参数
    r = urllib.request.urlopen('http://httpbin.org/get')
    # 读取response的内容
    text = r.read()
    print(text)
    # http返回状态码和msg
    print(r.status, r.reason)
    r.close()
    
    # 返回的内容是json格式,直接用Load函数加载
    obj = json.loads(text)
    print(obj)
    
    # r.headers是一个HTTPMessage对象
    # 对头部信息进行遍历,有必要的话改写头部信息的某些数据
    for k, v in r.headers._headers:
        print('%s: %s' % (k, v))
    #修改头部的数据的代理为了隐藏一些服务器的信息统一修改为以下的信息
    ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) ' 
         'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77' 
         ' Safari/537.36'
    #处理方式
    # 添加自定义的头信息(1) req
    = urllib.request.Request('http://httpbin.org/user-agent') req.add_header('User-Agent', ua) # 接收一个urllib.request.Request对象作为参数 r = urllib.request.urlopen(req) resp = json.load(r) # 打印出httpbin网站返回信息里的user-agent print("user-agent: ", resp["user-agent"])

    身份验证处理:

    auth_handler = urllib.request.HTTPBasicAuthHandler()
    #设置访问应提供的信息 auth_handler.add_password(realm
    ='Fake Realm', uri='http://httpbin.org', user='guye', passwd='123456')
    #传参与安装 opener
    = urllib.request.build_opener(auth_handler) urllib.request.install_opener(opener)
    #访问 r
    = urllib.request.urlopen('http://httpbin.org/basic-auth/guye/123456') print(r.read().decode('utf-8'))

    结果:

    get&post的方法的使用:

    # 使用GET参数
    params = urllib.parse.urlencode({'spam': 1, 'eggs':2, 'bacon': 2})
    url = 'http://httpbin.org/get?%s' % params
    with urllib.request.urlopen(url) as f:
        print(json.load(f))
    
    # 使用POST方法传递参数
    data = urllib.parse.urlencode({'name': '小明', 'age': 2})
    data = data.encode()
    with urllib.request.urlopen('http://httpbin.org/post', data) as f:
        print(json.load(f))
    
    # 使用代理IP请求远程url
    proxy_handler = urllib.request.ProxyHandler({
                            'http': 'http://iguye.com:41801'
                        })
    # proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()
    opener = urllib.request.build_opener(proxy_handler)
    r = opener.open('http://httpbin.org/ip')
    print(r.read())
    
    
    # urlparse模块
    o = urllib.parse.urlparse('http://httpbin.org/get')

    结果:

  • 相关阅读:
    rac node1节点侦听地址为127.0.0.1问题
    rac crs节点故障(未解决)
    杂牌设备网络接入引起交换机引起端口翻转的故障
    Impdp导出前准备工作以及主要命令
    查询dba_tables视图tablespaces_name为空的问题
    Expdp导出前准备工作以及主要命令
    带参数的方法解析
    类的无参方法,注释
    类和对象的解析
    二重循环的解析
  • 原文地址:https://www.cnblogs.com/topass123/p/13276816.html
Copyright © 2011-2022 走看看