python爬虫request方法介绍(详解Python3网络爬虫二:利用urllib.urlopen向有道翻译发送数据获得翻译结果)
python爬虫request方法介绍
详解Python3网络爬虫二:利用urllib.urlopen向有道翻译发送数据获得翻译结果上一篇内容,已经学会了使用简单的语句对网页进行抓取。接下来,详细看下urlopen的两个重要参数url和data,学习如何发送数据data
一、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) |
同样,运行这段代码同样可以得到网页信息。可以看一下这段代码和上个笔记中代码的不同,对比一下就明白了。
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())) |
可以得到如下运行结果:
二、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) |
这样我们就可以查看翻译的结果了,如下图所示:
json是一种轻量级的数据交换格式,我们需要从爬取到的内容中找到json格式的数据,这里面保存着我们想要的翻译结果,再将得到的json格式的翻译结果进行解析,得到我们最终想要的样子:杰克。
以上所述是小编给大家介绍的python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://blog.csdn.net/c406495762/article/details/59095864- python3爬虫代码(Python3爬楼梯算法示例)
- python3.9.6生成的注册表(厉害了,Python也能操作注册表)
- python数字形式转换详解(Python3.5实现的罗马数字转换成整数功能示例)
- pythonpandas数据类型(Python3.5 Pandas模块之Series用法实例分析)
- pythonpandas提取列索引(Python3.5 Pandas模块缺失值处理和层次索引实例详解)
- python3.7.2 详细安装教程(python3.5安装python3-tk详解)
- python获取天气源(Python3爬虫之自动查询天气并实现语音播报)
- python3 怎么查看函数用法(Python3 max函数基础用法)
- pythonrequests怎么导入模块(Python3使用requests模块实现显示下载进度的方法详解)
- python3.x base64怎么加密解密(python3.x实现base64加密和解密)
- python装饰器初学者教程(Python3.5装饰器原理及应用实例详解)
- python中mod函数的使用方法(详解Python3中ceil函数用法)
- zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)
- python 组合数据类型(详解Python3 对象组合zip和回退方式*zip)
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- python中导入模块的命令(Python3 导入上级目录中的模块实例)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
- 新闻周刊 青岛网红 赵厂长 编段子一箩筐输出快乐,陪父亲十二载勇斗病魔(新闻周刊青岛网红)
热门推荐
- 织梦二次安装教程(重新安装织梦系统以及转移空间、上传空间的方法)
- mysql的日志怎么清除(MySQL删除了记录不生效的原因排查)
- SQL Server ltrimrtrim函数的用法(SQL Server ltrimrtrim 去不掉空格的原因分析)
- mongodb insert操作
- dedecms5.7后台内链如何制作(DEDECMS教程之loop循环标签的使用详解)
- win7如何搭建php环境(阿里云Win2016安装Apache和PHP环境图文教程)
- vue自定义组件定义事件(基于Vue实现自定义组件的方式引入图标)
- Windows系统 VPS/云服务器远程3389管理连接(Windows系统 VPS/云服务器远程3389管理连接)
- 服务器怎么做到实时备份(香港云服务器数据备份周期多久最好?)
- mysql底层原理是什么(MySQL 页完全指南—浅入深出页的原理)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9