一、访问网络的两种方法

1.get:利用参数给服务器传递信息;参数为dict,然后parse解码

2.post:一般向服务器传递参数使用;post是把信息自动加密处理;如果想要使用post信息,需要使用到data参数

3.Content-Type:application/x-www.form-urlencode

4.Content-Length:数据长度

5.简而言之,一旦更改请求方法,请注意其他请求头信息相适应

6.urllib.parse.urlencode可以将字符串自动转换为上面的信息。

案例:利用parse模块模拟post请求分析百度翻译:分析步骤:

(1)打开谷歌浏览器,F12

(2)尝试输入单词girl,发想每敲击一个字母后都会有一个请求

(3)请求地址是:http://fanyi.baidu.com/sug

(4)打开network-XHR-sug

from urllib import request,parse

#负责处理json格式的模块

import json

"""

大致流程:

(1)利用data构造内容,然后urlopen打开

(2)返回一个json格式的结果

(3)结果就应该是girl的释义

"""

baseurl = "https://fanyi.baidu.com/sug"

#存放迎来模拟form的数据一定是dict格式

data = {

    #girl是翻译输入的英文内容,应该是由用户输入,此处使用的是硬编码

    "kw":"girl"

}

#需要使用parse模块对data进行编码

data = parse.urlencode(data).encode("utf-8")

#我们需要构造一个请求头,请求头应该至少包含传入的数据的长度

#request要求传入的请求头是一个dict格式

headers = {

    #因为使用了post,至少应该包含content-length字段

    "Content-length":len(data)

}

#有了headers,data,url就可以尝试发出请求了

rsp = request.urlopen(baseurl,data=data)#,headers=headers

json_data = rsp.read().decode()

print(json_data)

#把json字符串转化为字典

json_data = json.loads(json_data)

print(json_data)

for item in json_data["data"]:

    print(item["k"],"--",item["v"])

二、为了更多的设置请求信息,单纯的通过urlopen函数已经不太好用了​;需要利用request.Request类

这里只修改一部分代码,其他的代码都不变,​依然可以得到相同的结果。​

#构造一个Request的实例,就是借用这个类,来把能够传入的头信息进行封装扩展

req = request.Request(url=baseurl,data=data,headers=headers)

#有了headers,data,url就可以尝试发出请求了

rsp = request.urlopen(req)#,headers=headers

三、源码

Reptile3_PostAnlysis.py

https://github.com/ruigege66/PythonReptile/blob/master/Reptile3_PostAnlysis.py

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Python爬虫连载3-Post解析、Request类的更多相关文章

  1. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)

    一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...

  2. Python爬虫教程-18-页面解析和数据提取

    本篇针对的数据是已经存在在页面上的数据,不包括动态生成的数据,今天是对HTML中提取对我们有用的数据,去除无用的数据 Python爬虫教程-18-页面解析和数据提取 结构化数据:先有的结构,再谈数据 ...

  3. Python爬虫之Beautiful Soup解析库的使用(五)

    Python爬虫之Beautiful Soup解析库的使用 Beautiful Soup-介绍 Python第三方库,用于从HTML或XML中提取数据官方:http://www.crummv.com/ ...

  4. Python爬虫beautifulsoup4常用的解析方法总结(新手必看)

    今天小编就为大家分享一篇关于Python爬虫beautifulsoup4常用的解析方法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧摘要 如何用beau ...

  5. Python爬虫连载1-urllib.request和chardet包使用方式

    一.参考资料 1.<Python网络数据采集>图灵工业出版社 2.<精通Python爬虫框架Scrapy>人民邮电出版社 3.[Scrapy官方教程](http://scrap ...

  6. Python爬虫之三种数据解析方式

    一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...

  7. python爬虫(三) 用request爬取拉勾网职位信息

    request.Request类 如果想要在请求的时候添加一个请求头(增加请求头的原因是,如果不加请求头,那么在我们爬取得时候,可能会被限制),那么就必须使用request.Request类来实现,比 ...

  8. Python爬虫连载5-Proxy、Cookie解析

    一.ProxyHandler处理(代理服务器) 1.使用代理IP,是爬虫的常用手段 2.获取代理服务器的地址: www.xicidaili.com www.goubanjia.com 3.代理用来隐藏 ...

  9. 【Python爬虫】BeautifulSoup网页解析库

    BeautifulSoup 网页解析库 阅读目录 初识Beautiful Soup Beautiful Soup库的4种解析器 Beautiful Soup类的基本元素 基本使用 标签选择器 节点操作 ...

随机推荐

  1. spring cloud oauth2+JWT整合使用token返回JWT Cannot convert access token to JSON解决办法

    我碰到的问题是Token正常,但是资源访问不了,原因是,资源服务配置的时候需要传一个对象: 设置了这个就可以了

  2. Django部署--uwsgi配置--nginx服务器配置

    uwsgi.ini文件 [uwsgi] #使用nginx连接时使用,Django程序所在服务器地址 socket=127.0.0.1:8000 #直接做web服务器使用,Django程序所在服务器地址 ...

  3. 暑假第一周总结(在centos虚拟机上安装jdk以及hadoop并对hadoop进行配置)

    本周主要就是对虚拟机进行安装并在上边安装jdk以及hadoop并对其进行配置. 在看林子雨老师的教程时,下载了老师所给的全套的下载软件,在安装时发现老师所给的VirtualBox安装后无法正常启动,尝 ...

  4. python中os模块的一些小总结

    (一)os模块的应用小总结 os.name: 获取当前系统平台,Windows下返回'nt',Linux下返回'posix'.   os.linesep: 获取当前平台使用的行终止符.Windows下 ...

  5. 深入JVM内存区域管理,值得你收藏

    JDK和JRE和JVM的关系 JDK(Java Development Kit)是程序开发者用来来编译.调试java程序用的开发工具包 JRE(JavaRuntimeEnvironment,Java运 ...

  6. 教你5分钟做个手机APP[视频]

    天天宅在家里,没什么事做,录个教学视频吧! 发到了视频网站上去根本没人看,伤心ing啊! 不知cnblogs上面是否让我发! 先上一张效果图看看哈: 如果播放不正常请点这里:https://www.b ...

  7. [python]bytes和str

    Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] ...

  8. BZOJ 1046 [HAOI2007]上升序列(LIS + 贪心)

    题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们 ...

  9. MySQL中遍历查询结果的常用API(c)

    本中所使用的table: MySQL中的错误处理函数 unsigned int mysql_errno(MYSQL *mysql) const char *mysql_error(MYSQL *mys ...

  10. BurpSuite--代理和浏览器设置

    上一篇文章我们完成了JAVA环境的搭建和burpsuite的安装,接下来请大家和我一起一步一步的完成burpsuite的代理和浏览器的相关设置. 关注“白帽技术与网络安全”获取安装包 1.设置浏览器代 ...