zoukankan      html  css  js  c++  java
  • 爬虫请求库之requests

    requests简介

    #1、什么是requests模块
        requests模块是python中原生的基于网络请求的模块
    #2、它有什么作用
        用来模拟浏览器发起请求
    #3、优点
        自动处理url编码
        自动处理post请求参数
        简化cookie和代理操作
    
    #安装及基本使用流程
        pip install requests
      #使用流程
            指定url
            基于requests模块发起请求
            获取响应对象中的数据值
            持久化存储

     基于get请求

    #get常用参数
        #url
    
        #params {}
    
        #headers {}  --->>Referer ,User-Agent
    
        #cookies  {}  (Cookie信息虽然包含在请求头里,但requests模块有单独的参数来处理他,headers={}内就不要放它了)
    import requests
    # https://www.baidu.com/s?wd=python
    
    url='https://www.baidu.com/s'
    kw=input(">>:")
    headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
    }
    params={
        "wd":kw    #与上边wd相对应
    }
    response_text = requests.get(url=url,headers=headers,params=params).text
    with open('./baidu.html','w',encoding='utf-8')as f:
        f.write(response_text)
    简单使用

    基于post请求

    #GET请求
    HTTP默认的请求方法就是GET
         * 没有请求体
         * 数据必须在1K之内!
         * GET请求数据会暴露在浏览器的地址栏中
    
    GET请求常用的操作:
           1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
           2. 点击页面上的超链接也一定是GET请求
           3. 提交表单时,表单默认使用GET请求,但可以设置为POST
    
    
    #POST请求
    (1). 数据不会出现在地址栏中
    (2). 数据的大小没有上限
    (3). 有请求体
    (4). 请求体中如果存在中文,会使用URL编码!
    
    
    #!!!requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据
    import requests,json
    if __name__ == '__main__':
    
    
        url='https://fanyi.baidu.com/sug'
        kw=input(">>:")
        headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
        }
        data={
            "kw":kw
        }
        dic_json = requests.post(url=url,headers=headers,data=data).json()     #在确认响应是json类型的才可以使用
        fp=open('./fanyi.json','w',encoding='utf-8')
        json.dump(dic_json,fp,ensure_ascii=False)    #里边有中文,所以设为False
        print('over!!')
    简单使用
  • 相关阅读:
    scala中的注解
    scala中的表达式
    scala中枚举
    spark sql建表的异常
    hive和sequoiadb对接的问题
    java IO的总结
    Spark的序列化
    pentaho和spark-sql对接
    英语口语练习系列-C28-海滨-辨别身份-悬崖边的树
    2018-12-4-今日总结
  • 原文地址:https://www.cnblogs.com/pdun/p/10945555.html
Copyright © 2011-2022 走看看