• python requests操控网站


    使用库 :import requests
    安装:pip install requests
    示例:

    # 导入 requests 包
    import requests
    
    # 发送请求
    response = requests.get('https://www.baidu.com/')
    # 等价于 response = requests.request('get', 'https://www.baidu.com/')
    response.encoding='utf-8'  # 防止中文乱码必加
    
    # 返回网页内容
    print(response.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    response 对象

    每次调用 requests 请求之后,会返回一个 response 对象,该对象包含了具体的响应信息。

    属性或方法说明
    apparent_encoding显示request的
    close()关闭与服务器的连接
    content返回响应的内容,以字节为单位
    cookies返回一个 CookieJar 对象,包含了从服务器发回的 cookie
    elapsed返回一个 timedelta 对象,包含了从发送请求到响应到达之间经过的时间量,可以用于测试响应速度。比如 r.elapsed.microseconds 表示响应到达需要多少微秒。
    encoding解码 r.text 的编码方式
    headers返回响应头,字典格式
    history返回包含请求历史的响应对象列表(url)
    is_permanent_redirect如果响应是永久重定向的 url,则返回 True,否则返回 False
    is_redirect如果响应被重定向,则返回 True,否则返回 False
    iter_content()迭代响应
    iter_lines()迭代响应的行
    json()返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误)
    links返回响应的解析头链接
    next返回重定向链中下一个请求的 PreparedRequest 对象
    ok检查 “status_code” 的值,如果小于400,则返回 True,如果不小于 400,则返回 False
    raise_for_status()如果发生错误,方法返回一个 HTTPError 对象
    reason响应状态的描述,比如 “Not Found” 或 “OK”
    request返回请求此响应的请求对象
    status_code返回 http 的状态码,比如 404 和 200(200 是 OK,404 是 Not
    text返回响应的内容,unicode 类型数据
    url返回响应的 URL

    requests 方法

    方法描述
    delete(url, args)发送 DELETE 请求到指定 url
    get(url, params, args)发送 GET 请求到指定 url
    head(url, args)发送 HEAD 请求到指定 url
    patch(url, data, args)发送 PATCH 请求到指定 url
    post(url, data, json, args)发送 POST 请求到指定 url
    put(url, data, args)发送 PUT 请求到指定 url
    request(method, url, args)向指定的 url 发送指定的请求方法

    get():get请求

    # 导入 requests 包
    import requests
    
    kw = {'wd': 'requests'}
    
    # 设置请求头
    headers = {
       "Accept-Encoding": "gzip, deflate",
       "Accept-Language": "en-US, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.2",
       "Connection": "Keep-Alive",
       "Cookie": "BIDUPSID=66FF68AA26FC6EDA7D0F3A7B83889785; PSTM=1650200337; BAIDUID=66FF68AA26FC6EDAA62D11242D93E3C4:FG=1; BDUSS=hGSzZIRXNNanhuTmlpeHRVVkpyUlpOaWJjVnBkWldxV2pkbGllSVAtQnZxUHhpSVFBQUFBJCQAAAAAAAAAAAEAAAAK0sJE19DX0LTzyuXK5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8b1WJvG9VidV; ispeed_lsm=0; BDSFRCVID=VKAOJeC62AcQbRjDU1d-hDtKuSdUpQTTH6f3sz-1mEw0HZdPwu18EG0PyU8g0K4MKk0gogKK3mOTHR8F_2uxOjjg8UtVJeC6EG0Ptf8g0f5; H_BDCLCKID_SF=Jn4OoCt-JC83fP36q4To5PtebMoHetJyaR3pahjvWJ5TMCoq-pQD04Iv3HQbe4vRbg3tbbbG-UjxShPCb6b52CrLhtofJUvz5NRfLCDy3l02V-Tae-t2yT0IyU4jK-RMW20eWl7mWU_WsxA45J7cM4IseboJLfT-0bc4KKJxbnLWeIJIjj6jK4JKDN0OJx5; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; delPer=0; BD_CK_SAM=1; PSINO=3; BA_HECTOR=alala58l8k2k250h8gah6i331hfpdtr17; ZFY=kC9agDNZ79qiM0O8SgeVUMFor:Be68PgM1D2NvMsPttw:C; BDRCVFR[tFA6N9pQGI3]=mk3SLVN4HKm; BD_HOME=1; BAIDUID_BFESS=66FF68AA26FC6EDAA62D11242D93E3C4:FG=1; BDUSS_BFESS=hGSzZIRXNNanhuTmlpeHRVVkpyUlpOaWJjVnBkWldxV2pkbGllSVAtQnZxUHhpSVFBQUFBJCQAAAAAAAAAAAEAAAAK0sJE19DX0LTzyuXK5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8b1WJvG9VidV; BDSFRCVID_BFESS=VKAOJeC62AcQbRjDU1d-hDtKuSdUpQTTH6f3sz-1mEw0HZdPwu18EG0PyU8g0K4MKk0gogKK3mOTHR8F_2uxOjjg8UtVJeC6EG0Ptf8g0f5; H_BDCLCKID_SF_BFESS=Jn4OoCt-JC83fP36q4To5PtebMoHetJyaR3pahjvWJ5TMCoq-pQD04Iv3HQbe4vRbg3tbbbG-UjxShPCb6b52CrLhtofJUvz5NRfLCDy3l02V-Tae-t2yT0IyU4jK-RMW20eWl7mWU_WsxA45J7cM4IseboJLfT-0bc4KKJxbnLWeIJIjj6jK4JKDN0OJx5; BD_UPN=12314753; sugstore=1; COOKIE_SESSION=71_0_9_9_10_7_1_0_9_3_0_0_70788_0_4_0_1660729351_0_1660729347%7C9%2393_19_1660527400%7C5; H_PS_PSSID=36557_37112_36918_37129_37163_37136_26350_37088; H_PS_645EC=4cc2eJy9DIqlkz3yDk8gAoJaAvWpj7HuUSDsY%2BhimFdVj8gIxVMIu7%2FfFVk; BDSVRTM=29; WWW_ST=1660729548295",
       "Host": "www.baidu.com",
       "is_pbs": "requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2%20%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81",
       "is_referer": "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2%20%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81&oq=requests%2520%25E7%2599%25BE%25E5%25BA%25A6%25E6%259F%25A5%25E8%25AF%25A2&rsv_pq=c1c505f300068e69&rsv_t=f954yaBLJPRoW0h8mDveBLV%2FqsAagl8nsx%2BVmRT6Z8BMnhhJ3um%2BbCziPoM&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_btype=t&rsv_sug3=32&rsv_sug1=21&rsv_sug7=100&bs=requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2",
       "is_xhr": "1",
       "Referer": "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2%20%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81&oq=requests%2520%25E7%2599%25BE%25E5%25BA%25A6%25E6%259F%25A5%25E8%25AF%25A2%2520%25E5%25AE%2589%25E5%2585%25A8%25E9%25AA%258C%25E8%25AF%2581&rsv_pq=cde28a23000189af&rsv_t=4cc2eJy9DIqlkz3yDk8gAoJaAvWpj7HuUSDsY%2BhimFdVj8gIxVMIu7%2FfFVk&rqlang=cn&rsv_dl=tb&rsv_enter=0&rsv_btype=t",
       "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
       "X-Requested-With": "XMLHttpRequest",
    }
    # params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
    response = requests.get(r"https://www.baidu.com/s?", params=kw, headers=headers)
    response.encoding='utf-8'
    print(response.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    成功查询
    在这里插入图片描述
    post():post请求

    # 导入 requests 包
    import requests
    
    # 表单参数,参数名为 fname 和 lname
    myobj = {'fname': 'RUNOOB','lname': 'Boy'}
    
    # 发送请求
    x = requests.post('https://www.runoob.com/try/ajax/demo_post2.php', data = myobj)
    
    # 返回网页内容
    print(x.text)
    # 打印响应头
    print(x.headers)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    案例:使用服务器寻找员工手机号,并且发送验证短信

    打开浏览器
    在浏览器网络内 拷贝请求头
    在这里插入图片描述

    
    # 设置请求头
    headers = {
        "Accept": "application/json, text/plain, */*",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh-CN,zh;q=0.9,ko;q=0.8",
        "cid": "13616011111",
        "Connection": "keep-alive",
        "Host": "app.fzxtech.com",
        "number": '13811307119',
        "Origin": "https://pt.fzxtech.com",
        "Referer": "https://pt.fzxtech.com/",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-site",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    发送请求,只要请求成功。则推测短信已发出。

    response = requests.get(r"https://app.fzxtech.com/gs-api/register/sendcode2", headers=headers)
    
    • 1

    response是发出请求后收到的响应

     print(response.text)  # 打印响应内容(网页的html中的信息)
     print(response.headers)  # 打印响应头
    
    • 1
    • 2

    在这里插入图片描述
    可以用这种方式结合可能的区域使用的手机号码,循环发送请求,如果请求有响应即可判断这个手机号是有人使用的。

  • 相关阅读:
    VNC远程连接无法打开图形界面应用问题
    网络流基础概念与算法总结
    从一个非科班的角度唠唠我的编程技术学习成长之路,希望对你有帮助
    gcc 新旧版本ldd的显示动态库的不同
    【附源码】计算机毕业设计SSM社区团购配送与管理系统
    Python如何采集关键词数据
    Linux Shell脚本编写指南
    CSAPP Lab6:Malloc
    git 常用命令
    yolov8 snpe报错 Invalid Slice inputs 4, only constant inputs supported
  • 原文地址:https://blog.csdn.net/zz891422822/article/details/126389486