zoukankan      html  css  js  c++  java
  • Python request请求

    1.基础请求框架

    from urllib import request
    url=r"http://www.baidu.com"
    req=request.Request(url)    #构造请求
    response=request.urlopen(req).read().decode()   #获取响应
    print(response)

    2.自定义header

    from urllib import request
    import re
    headers={
        "User-Agent":"Mozilla/5.0"
    }
    url=r"http://www.baidu.com"
    req=request.Request(url,headers=headers)    #构造请求
    response=request.urlopen(req).read().decode()   #获取响应
    pat=r"<title>(.*?)</title>"     #正则匹配规则
    data=re.findall(pat,response)   #正则匹配筛选
    print(data)

    3.利用随机数随机更换agent

    from urllib import request
    import re
    import random
    
    #将多个user-agent值放入list
    agentlist=["Mozilla/5.0",
               "Mozilla/5.0",
               "Mozilla/5.0"]
    #利用随机数随机取一个agent
    agent=random.choice(agentlist)
    print(agent)
    headers={
        "User-Agent":agent
    }
    url=r"http://www.baidu.com"
    req=request.Request(url,headers=headers)    #构造请求
    response=request.urlopen(req).read().decode()   #获取响应
    pat=r"<title>(.*?)</title>"     #正则匹配规则
    data=re.findall(pat,response)   #正则匹配筛选
    print(data)


    urlopen是一个特殊的opener(模块构建的)

    urlopen()方法不支持代理、cookie等其他的HTTP/HTTPS高级功能。

    要支持这些功能:通过request.build_opener()方法创建自定义opener对象。

    使用自定义的opener对象,调用open()方法发送请求。

    如果程序里所有请求都使用自定义opener,可以使用request.install_opener()将自定义的opener对象定义为全局opener,表示如果之后凡是调用urlopen,都将使用这个opener。

    from urllib import request
    import re
    headers={
        "User-Agent":"Mozilla/5.0"
    }
    url=r"http://www.baidu.com"
    #构建HTTP处理器对象(专门处理HTTP请求的对象)
    http_hander=request.HTTPHandler()
    #创建自定义opener
    opener=request.build_opener(http_hander)
    #创建自定义请求对象
    req=request.Request(url,headers=headers)
    #发送请求,获取响应
    response=opener.open(req).read().decode()
    pat=r"<title>(.*?)</title>"
    data=re.findall(pat,response)
    print(data)
    #把自定义opener设置为全局,这样用urlopen发送的请求也会使用自定义的opener
    request.install_opener(opener)
    
    #此时的urltopen也会使用自定义的opener
    test=request.urlopen(req)
  • 相关阅读:
    sql 随机获取100条数据
    NPOI导出信息
    JavaScript打印页面
    生僻字在页面上不显示(䶮)
    C# 下载文件并使用指定名称展示
    layui 表格列编辑获取编辑前的值然后重新赋值,并通过键盘控制编辑位置
    C# 网络图片转base64
    C# WebApi debug模式下编译没有问题,切换到release模式下编译就有异常,但是依旧能生成成功,再切回到debug模式也会报错,也可以生成成功
    HTTP/2
    Class的继承
  • 原文地址:https://www.cnblogs.com/hsinfo/p/13618555.html
Copyright © 2011-2022 走看看