zoukankan      html  css  js  c++  java
  • 爬虫学习

     

    1. urllib库详解     PYTHON内置的库
      1.   urllib.request    请求模块
      2. urllib.error    异常处理模块
      3. urllib.parse   URL解析模块
      4.   urllib.robotparser      robots.txt解析模块    哪些可以查 哪些不可以查

     urlopen

    import urllib.request
    response=urllib.request("http://www.baidu.com")
    print(response.read().decode("utf-8"))
    

    urllib.parse封装POST数据

    import urllib.parse,urllib.request
    data=bytes(urllib.parse.urlencode({'world':'hello'}),encoding='utf-8')
    response=urllib.request.urlopen("http://httpbin.org/post",data=data)
    response.read().decode("utf-8")
    urlparse("http://www.baidu.com").netloc    #www.baidu.com
    urlparse("http://www.baidu.com").scheme    #http

    urllib.request设置超时间,并且捕获错误

    import urllib.request
    import socket
    import urllib.error
    try:
        responst=urllib.request.urlopen("http://httpbin.org/get",timeout=0.1)
    except urllib.error.URLError as e:
        if isinstance(e.reason,socket.timeout):
            print("time out")

     响应

      响应类型

    from urllib.request import urlopen
    response=urlopen('http://www.python.org')
    print(type(response))  #<class 'http.client.HTTPResponse'>
    response.getheaders() #  得到响应头
    response.getheaders("Server") #ngix
    response.read().decode()         #得到响应内容

     打开一个连接

    import urllib.request
    response=urllib.request.urlopen("https://www.python.org")
    print(response.read().decode('utf-8'))

    打开更加复杂的请求可以

    import urllib.request
    request=urllib.request.Request("https://python.org")
    response=urllib.request.urlopen(request)
    print(response.read().decode("utf-8"))  #得到的结果 是一样的,比如要加一个HEADERS

    现在增加内容在请求里面

    from urllib import request,parse
    url='http://httpbin.org/post'
    headers={'User-Agent':'Mozilla/4.0(compatible;MSIE 5.5;Windows nt)',
            'Host':'httpbin.org'}
    dict={'name':'Germey'}
    data=bytes(parse.urlencode(dict),encoding='utf-8')
    req=request.Request(url=url,data=data,headers=headers,method='POST')
    response=request.urlopen(req)
    print(response.read().decode('utf-8'))

    另一个方法是直接增加HEADERS内容

    from urllib import request,parse
    url='http://httpbin.org/post'
    dict={'name':'Germey'}
    data=bytes(parse.urlencode(dict),encoding='utf-8')
    req=request.Request(url=url,data=data,headers=headers,method='POST')
    req.add_header('User-Agent':'Mozilla/4.0(compatible;MSIE 5.5;Windows nt)','Host':'httpbin.org')
    response=request.urlopen(req)
    print(response.read().decode('utf-8'))
  • 相关阅读:
    AOP面向切面编程基础
    记第一次年会主持
    Tomcat服务器部署JavaWeb项目War包基本步骤
    VM14无法将网络更改为桥接状态:没有未桥接的主机网络适配器
    Ubuntu 16.04 安装 IDEA
    Linux之文件挂载
    图片大小
    打开文件、
    Setup Factory
    Repeater获取某一行TextBox值
  • 原文地址:https://www.cnblogs.com/xupanfeng/p/13503398.html
Copyright © 2011-2022 走看看