• 三、Python爬虫-requests库数据挖掘


    requests库数据挖掘

    requests安装和使用

      下载安装:pip install requests

    #requests模块
    
    import requests
    
    #发送请求 content:以二进制的形式获取网页的内容
    response=requests.get("http://www.baidu.com").content.decode()
    #response=requests.request("get","http://www.baidu.com").content.decode()
    
    print(response)

    添加请求头和参数

    import requests
    
    url="http://www.baidu.com/s?"
    
    headers={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
    AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/81.0.4044.138 Safari/537.36"
    }
    
    wd={"wd":"中国"}
    
    response=requests.get(url,params=wd,headers=headers)
    
    # 返回一个字符串形式的数据
    data=response.text
    # 返回一个二进制形式的数据
    data2=response.content
    
    print(data2.decode())

    处理Post请求

      处理get请求:get()方法

      处理post请求:post()方法

    import requests
    import re
    
    #构造请求头信息
    header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
    AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/81.0.4044.122 Safari/537.36"
    }#谷歌浏览器
    
    #http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 网页上的url
    url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    
    key="靓仔"
    
    #发送到web服务器的表单数据
    formdata={
    "i":key,
    "from":"AUTO",
    "to":"AUTO",
    "smartresult":"dict",
    "client":"fanyideskweb",
    "salt":"15880563488791",
    "sign":"cc2c40d740538fc5edc0380891faef27",
    "ts":"1588053583943",
    "bv":"f9c86b1fdf2f53c1fefaef343285247b",
    "doctype":"json",
    "version":"2.1",
    "keyfrom":"fanyi.web",
    "action":"FY_BY_REALTlME"
    
    }
    
    response=requests.post(url,headers=header,data=formdata)
    
    # 获取到的是json数据
    # 对应的是字典
    # print(response.json())
    
    pat=r'"tgt":"(.*?)"}]]' #字符串中有"",再用''括起来表示字符串
    
    # 获取到的是字符串
    result=re.findall(pat,response.text)
    
    print(result[0])

    代理IP

    import requests
    
    #设置ip地址
    #proxy={"http":"http://代理ip地址:端口号"}
    #可以设置多个
    proxy={
    "http":"http://222.82.130.23:8060",
    "http":"http://101.248.64.68:80",
    }
    
    response=requests.get("http://www.baidu.com",proxies=proxy)
    
    print(response.content.decode())

    获取响应的cookie

      cookie:用户信息

    import requests
    
    response=requests.get("http://www.baidu.com")
    
    #1.获取返回的cooketjar对象
    cookiejar=response.cookies
    
    #2.将cookiejar转换成字典
    cookiedict=requests.utils.dict_from_cookiejar(cookiejar)
    
    print(cookiedict)

    session实现登陆

      相比直接使用cookie,创建session可以得到新的cookie信息,不会出现cookie失效的情况

    #使用session实现登陆
    
    import requests
    
    #构造请求头信息
    header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
    AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/81.0.4044.122 Safari/537.36"
    }#谷歌浏览器
    
    #创建session对象
    ses=requests.session()
    
    #构造登陆需要的参数
    data={"email":"325*****@qq.com","password":"123321a"}
    
    #通过传递用户名密码得到cookie信息
    ses.post("http://www.renren.com/PLogin.do",data=data,headers=header)
    
    #请求需要的页面,每次请求会带入cookie信息
    response=ses.get("http://www.renren.com/880151247/profile")
    
    print(response.text)

    小总结

      requests模块的方法:   

      1.requests.request()  发送请求

        headers=header,data=formdata,proxies=proxy  请求头信息,formdata,代理ip

      2.requests.get()  发送get请求

      3.requests.post()  发送post请求       

      4.requests.utils.dict_from_cookiejar()  将cookiejar转换成字典

      5.requests.session()  创建session对象

  • 相关阅读:
    牛客 小a与星际探索 bfs
    gear gym 思维题
    dp Surf
    P1280 尼克的任务
    Codeforces Round #539 (Div. 2) C. Sasha and a Bit of Relax
    Codeforces Round #542 C. Connect 搜索
    Layui 文件上传 附带data数据
    Layui 隐藏左侧菜单
    Layui 关闭当前标签页
    Layui Iframe页面间 方法的相互调用
  • 原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12956945.html
Copyright © 2020-2023  润新知