• Python爬虫教程-07-post介绍(百度翻译)(上)


    Python爬虫教程-07-post介绍(百度翻译)(上)

    • 访问网络两种方法
    • get:
      • 利用参数给服务器传递信息
      • 参数为dict,使用parse编码
    • post :(今天给大家介绍的post)
      • 一般向服务器传递参数使用
      • post是把信息自动加密处理
      • 使用post传递信息,需要用到data参数
      • 使用post意味着http的请求头信息可能需要更改:
        • Content-Type:application/x-www.form-urlencode
        • Content-Length:数据长度
        • 简而言之,一旦更改请求的方法,注意其他请求头部信息相适应
      • urllib.parse.urlencode可以将字符串自动转换成上面的格式

    案例v7

    • post经典案例,就是百度翻译
      • 利用parse模块模拟post请求
      • 分析步骤
        • 1.打开开发者工具F12>【Network】>【XHR】>【Headers】
        • 2.尝试简单的单词,查看发出的请求
        • 3.找到请求地址URL,请求的方式Method
        • 4.找到参数的传递格式Content-Type, 参数样式Form Data
    • 编写代码
    # 案例v7百度翻译
    from urllib import request,parse
    # 导入json包,负责处理json格式的模块
    import json
    
    '''
    大致流程:
    1.利用data构造内容,然后urlopen打开
    2.返回一个json格式的结果
    3.结果就应该是服务器返回的释义
    '''
    
    baseurl = 'http://fanyi.baidu.com/sug'
    # 存放用来模拟form的数据,一定是dict格式
    keyword = input("请输入需要翻译的内容:")
    data = {
        'kw': keyword
    }
    # print(data)
    
    # 需要使用parse模块对data进行编码
    data = parse.urlencode(data)
    data = data.encode('utf-8')
    # print("编码后的data:",data)
    # print("编码后的data类型:",type(data))
    # 当需要类型为bytes时:在数据的后面加上: data = data.encode('utf-8')
    
    # 构造请求头,请求头部至少包含:
    # 1.传入数据的长度
    # 2.request要求传入的请求是一个dict格式
    
    # 有了headers,data,url就可以尝试发出请求
    rsp = request.urlopen(baseurl,data=data)
    
    json_data = rsp.read().decode()
    
    # 把json字符串转换为字典
    json_data = json.loads(json_data)
    # print(json_data)
    
    for item in json_data['data']:
        if item['k'] == keyword:
            print(item['k'], ": ", item['v'])
    
    

    运行结果

    这里写图片描述

    更多文章链接:Python 爬虫随笔


    - 本笔记不允许任何个人和组织转载
  • 相关阅读:
    理解AJAX工作原理 构建网站的有效方法()
    吃大亏的SQL
    Global
    jQuery插件jTemplates(模板
    distinct吃亏记
    事件和委托的编译代码
    星期划分
    理解AJAX工作原理 构建网站的有效方法(5)
    理解AJAX工作原理 构建网站的有效方法(2)
    我比较笨系列2.《委托》将方法绑定到委托
  • 原文地址:https://www.cnblogs.com/xpwi/p/9600649.html
Copyright © 2020-2023  润新知