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

一、urlopen的url参数 Agent

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

  • geturl()返回的是一个url的字符串;
  • info()返回的是一些meta标记的元信息,包括一些服务器的信息;
  • getcode()返回的是HTTP的状态码,如果返回200表示请求成功。

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

了解到这些,我们就可以进行新一轮的测试,新建文件名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()))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

可以得到如下运行结果:

二、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.打开有道翻译界面,如下图所示:

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

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

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

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

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

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

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

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

原文地址:https://www.cnblogs.com/Bighua123/p/8413483.html

时间: 2024-10-13 22:28:16

Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果的相关文章

Python3网络爬虫——二、Urllib库的基本使用

一.什么是Urllib Urllib库是Python自带的一个http请求库,包含以下几个模块: urllib.request 请求模块 urllib.error   异常处理模块 urllib.parse   url解析模块 urllib.robotparser  robots.txt解析模块 其中前三个模块比较常用,第四个仅作了解. 二.Urllib方法介绍 将结合Urllib的官方文档进行说明.首先是urllib.request模块: urllib.request.urlopen(url,

Python3网络爬虫(三):urllib.error异常

运行平台:Windows Python版本:Python3.x IDE:Sublime text3 转载请注明作者和出处:http://blog.csdn.net/c406495762/article/details/59488464 一.urllib.error urllib.error可以接收有urllib.request产生的异常.urllib.error有两个方法,URLError和HTTPError.如下图所示: URLError是OSError的一个子类,HTTPError是URLE

Python3网络爬虫(七):使用Beautiful Soup爬取小说

转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 一.Beautiful Soup简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简

Python3网络爬虫(八):爱奇艺等主流视频网站的VIP视频破解(在线观看+视频下载)

转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 一.前言 没有会员,想在线观看或下载爱奇艺.PPTV.优酷.网易公开课.腾讯视频.搜狐视频.乐视.土豆.A站.B站等主流视频网站的VIP视频?又不想充会员怎么办?博主本次写的VIP视频破解助手也许可以帮你解决烦恼. 二.软件使用说明 1.软件下载 软件运行平台:Windows 注意:该软件已经打包成exe可

python3网络爬虫学习——基本库的使用(1)

最近入手学习Python3的网络爬虫开发方向,入手的教材是崔庆才的<python3网络爬虫开发实战>,作为温故所学的内容同时也是分享自己操作时的一些经验与困惑,所以开了这个日记,也算是监督自己去学习.在这一系列的日记中我也会随时加上一些书中没有的内容作为对所学知识的一个补充. (1)使用urllib库 在python3中,把python2的urllib和urllib2两个库合并了,同时作为了其内置的HTTP请求库,不需要额外安装,这个库包括四个模块 request:最基本的HTTP请求模块,可

Python3网络爬虫(十):这个帅哥、肌肉男横行的世界(爬取帅哥图)

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Python3网络爬虫(十):这个帅哥.肌肉男横行的世界(爬取帅哥图) - Jack-Cui - 博客频道 - CSDN.NET Jack-Cui 努力-是为了将运气成分降到最低 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯

《Python3网络爬虫实战案例(崔庆才著)》 中文版PDF下载,附源代码+视频教程

<Python3网络爬虫实战案例(崔庆才著)>中文版PDF下载,附源代码+视频教程,带目录资料下载:https://pan.baidu.com/s/1OzxyHQMLOzWFMzjdQ8kEqQ 原文地址:http://blog.51cto.com/7369682/2330247

python3网络爬虫系统学习:第一讲 基本库urllib

在python3中爬虫常用基本库为urllib以及requests 本文主要描述urllib的相关内容 urllib包含四个模块:requests——模拟发送请求 error——异常处理模块 parse——关于URL处理方法的工具模块 robotparser——通过识别网站robot.txt判断网站的可爬取内容 一.发送请求 urllib库发送请求主要使用request模块中的两个内容:urlopen()方法以及Requests类,其中Requests类是结合urlopen()方法来使用的. 首

Python3网络爬虫实战-23、使用Urllib:分析Robots协议

利用 Urllib 的 robotparser 模块我们可以实现网站 Robots 协议的分析,本节我们来简单了解一下它的用法. 1. Robots协议 Robots 协议也被称作爬虫协议.机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取.它通常是一个叫做 robots.txt 的文本文件,放在网站的根目录下. 当搜索爬虫访问一个站点时,它首先会检查下这个站点根目录下是否存在 robots.tx