zoukankan      html  css  js  c++  java
  • python3 爬虫2--发送请求1

    1urlopen

    属于url.request类

    我们用urlopen("网址")来发送请求

    最基础的发送请求如下

    from urllib.request import urlopen

    reponse=urlopen('https://www.baidu.com')

    print(reponse.read.decode('utf-8'))

    这里面的reponse是一个HTTPResponse类型的对象

    包含的方法有read(),readto(),getheader(name),getheaders(),fileno()

    read上面已经用过我们还可以print(reponse.getheaders());print(reponse.getheader('name'))

    包含的属性有msg,version,status,reason,debuglevel,close等

    同时urlopen还有其他参数可以选例如:

    data参数,要求字节流编码格式内容

    data=bytes(urllib.parse.urlencode({'word':'hello'},encode='utf-8')),

    timeout参数,表示超过指定时间,就会抛出异常

    try:

      response=urllib.request.urlopen('http://httpbin.org/get',timeout=0.1)

    except urllib.error.URLErroe as e:

      if isinstance(e.reason,socket.timeout):

        print('Time Out')

    其它还有context参数,cafile,capath参数

    2Rquest

    urlopen只能发起最简单的请求,如果我们需要在请求中加入一些Headers等信息,就需要用到Request

    Resquest的构造方法如下

    class urllib.request.Request(url,data=None,headers={},origin_req_host=None,

    unverifiable=False,method=None)

    url:必填参数

    data参数:同上,如果要传,必须要传bytes类型,如果是字典,用parse模块里面的urlencode编码

    headers参数:是一个字典,这是请求中的headers了,可以自己直接构造,还可以调用Request示例的add_headers()方法

    origin_req_host参数是指的请求方host名称或者IP地址。

    underifiable参数值得是这个请求是无法验证的,默认是false

    methon参数用来支持请求使用的方法,比如GET,POST,PUT等等

    下面是例子

    url='http://httpbin.org/post'

    headers={

      'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',

      Host': 'httpbin.org'

    }

    dict={

      ‘name’:'lihua'}

    data=bytes(parse.urlendoe(dict),encoding='utf-8')

    req=request.Request(url=url,data=data,headers=headers,method='POST')

    reponse=request.urlopen(erq)

    print(repose,read().decode('utf-8'))

    想要使用add_headerd的话则这么写

    req=request.Request(url=url,data=data,method='POST')

    req.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')

    下面的就是更高级的handler的用法,以后再续

  • 相关阅读:
    leetcode 1. Two Sum
    leetcode 168. Excel Sheet Column Title
    [LeetCode] Water and Jug Problem 水罐问题
    leetcode 80 Remove Duplicates from Sorted Array II
    leetcode 239. Sliding Window Maximum
    文件处理
    python网络编程 之 twisted
    ICMP & ping & traceroute
    Java String 转整形
    Java 字符数字得到整数
  • 原文地址:https://www.cnblogs.com/daibigmonster/p/7519485.html
Copyright © 2011-2022 走看看