Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果[通俗易懂]

运行平台:WindowsPython版本:Python3.xIDE:Sublimetext3

大家好,又见面了,我是你们的朋友全栈君。

运行平台:Windows
Python版本:Python3.x
IDE:Sublime text3

转载请注明作者和出处:http://blog.csdn.net/c406495762/article/details/59095864

    上一篇内容,已经学会了使用简单的语句对网页进行抓取。接下来,详细看下urlopen的两个重要参数url和data,学习如何发送数据data

一、urlopen的url参数 Agent

1

   url不仅可以是一个字符串,例如:http://www.baidu.com。url也可以是一个Request对象,这就需要我们先定义一个Request对象,然后将这个Request对象作为urlopen的参数使用,方法如下:

# -*- coding: UTF-8 -*-
from urllib import request

if __name__ == "__main__":
    req = request.Request("http://fanyi.baidu.com/")
    response = request.urlopen(req)
    html = response.read()
    html = html.decode("utf-8")
    print(html)

    同样,运行这段代码同样可以得到网页信息。可以看一下这段代码和上个笔记中代码的不同,对比一下就明白了。

    urlopen()返回的对象,可以使用read()进行读取,同样也可以使用geturl()方法、info()方法、getcode()方法。

2

  • geturl()返回的是一个url的字符串;

  • info()返回的是一些meta标记的元信息,包括一些服务器的信息;

  • getcode()返回的是HTTP的状态码,如果返回200表示请求成功。

    关于META标签和HTTP状态码的内容可以自行百度百科,里面有很详细的介绍。

3

4

    了解到这些,我们就可以进行新一轮的测试,新建文件名urllib_test04.py,编写如下代码:

# -*- coding: UTF-8 -*-
from urllib import request

if __name__ == "__main__":
    req = request.Request("http://fanyi.baidu.com/")
    response = request.urlopen(req)
    print("geturl打印信息:%s"%(response.geturl()))
    print('**********************************************')
    print("info打印信息:%s"%(response.info()))
    print('**********************************************')
    print("getcode打印信息:%s"%(response.getcode()))

    可以得到如下运行结果:

5

二、urlopen的data参数

    我们可以使用data参数,向服务器发送数据。根据HTTP规范,GET用于信息获取,POST是向服务器提交数据的一种请求,再换句话说:

    从客户端向服务器提交数据使用POST;

    从服务器获得数据到客户端使用GET(GET也可以提交,暂不考虑)。

    如果没有设置urlopen()函数的data参数,HTTP请求采用GET方式,也就是我们从服务器获取信息,如果我们设置data参数,HTTP请求采用POST方式,也就是我们向服务器传递数据。

    data参数有自己的格式,它是一个基于application/x-www.form-urlencoded的格式,具体格式我们不用了解, 因为我们可以使用urllib.parse.urlencode()函数将字符串自动转换成上面所说的格式。

三、发送data实例

    向有道翻译发送data,得到翻译结果。

    1.打开有道翻译界面,如下图所示:

6

    2.鼠标右键检查,也就是审查元素,如下图所示:

7

    3.选择右侧出现的Network,如下图所示:

8

    4.在左侧输入翻译内容,输入Jack,如下图所示:

9

    5.点击自动翻译按钮,我们就可以看到右侧出现的内容,如下图所示:

10

    6.点击上图红框中的内容,查看它的信息,如下图所示:

11

12

    7.记住这些信息,这是我们一会儿写程序需要用到的。

    新建文件translate_test.py,编写如下代码:

# -*- coding: UTF-8 -*-
from urllib import request
from urllib import parse
import json

if __name__ == "__main__":
    #对应上图的Request URL
    Request_URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/link'
    #创建Form_Data字典,存储上图的Form Data
    Form_Data = {}
    Form_Data['type'] = 'AUTO'
    Form_Data['i'] = 'Jack'
    Form_Data['doctype'] = 'json'
    Form_Data['xmlVersion'] = '1.8'
    Form_Data['keyfrom'] = 'fanyi.web'
    Form_Data['ue'] = 'ue:UTF-8'
    Form_Data['action'] = 'FY_BY_CLICKBUTTON'
    #使用urlencode方法转换标准格式
    data = parse.urlencode(Form_Data).encode('utf-8')
    #传递Request对象和转换完格式的数据
    response = request.urlopen(Request_URL,data)
    #读取信息并解码
    html = response.read().decode('utf-8')
    #使用JSON
    translate_results = json.loads(html)
    #找到翻译结果
    translate_results = translate_results['translateResult'][0][0]['tgt']
    #打印翻译信息
    print("翻译的结果是:%s" % translate_results)

    这样我们就可以查看翻译的结果了,如下图所示:

13

    JSON是一种轻量级的数据交换格式,我们需要从爬取到的内容中找到JSON格式的数据,这里面保存着我们想要的翻译结果,再将得到的JSON格式的翻译结果进行解析,得到我们最终想要的样子:杰克。

                                                            14

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125617.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • CreateThread 函数[通俗易懂]

    CreateThread 函数[通俗易懂]改变了栈的大小,但是把CreateThread的第2参数改成0x100000或者更小的时候,程序还是会出现这样的问题,只有将栈的大小还原为默认值,且CreateThread的第2参数为0才能正确运行详细的请查看:http://topic.csdn.net/u/20090905/15/7bf41679-3ed9-40b5-ac71-5f11c088984c.html微软在Windows

  • 如何使用串口调试助手(调试串口)

    如何使用串口调试助手(调试串口)转载自:https://jingyan.baidu.com/article/54b6b9c0b3c8c02d583b4707.html如何使用串口调试助手(调试串口)很多时候,调试硬件需要用串口输出一些调试信息,用电脑USB口接收十分方便,串口调试软件很多,用习惯了还是觉得串口调试助手最为方便,这个也是因人而异吧,接下来带大家了解一下串口调试助手如何使用。工具/原料 windows电脑一台 USB接口线一根(用于连接硬件和电脑USB接口) 方法/步骤 1 下载.

  • fprintf函数的作用_c语言fopen函数的用法

    fprintf函数的作用_c语言fopen函数的用法fprintf(简介)fprintf是C/C++中的一个格式化库函数,位于头文件中,其作用是格式化输出到一个流文件中;函数原型为intfprintf(FILE*stream,constchar*format,[argument]…),fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。以“分别用十进制,八进制,十六进制输…

    2022年10月19日
  • 详细安装Adobe Dreamweaver教程和制作第一个网页

    详细安装Adobe Dreamweaver教程和制作第一个网页DW安装教程

  • 通过端口查找进程

    通过端口查找进程

  • js生成二维码小工具图片_二维码生成规则

    js生成二维码小工具图片_二维码生成规则js完整代码,引用了qrcode.min.js,jquery.min.js效果图连接别忘记加上http://哦代码中引用的qrcode.min.js,jquery.min.js可以去网上百度下载<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metahttp-equiv=”X-UA-Compatible”content=”IE=edge”>

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号