一、访问网络的两种方法

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. Hexo Next 接入 google AdSense 广告

    前言 个人网站 www.yanlongwang.net 已经运营近一年,每日的浏览量不断上升,现在维持在两位数,打算承接一点广告赚睡后收入,用来维持网站的日常运营,希望能覆盖网站的服务器和域名开销. ...

  2. Serverless 的运行原理与组件架构

    本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流,了解大家的业务场景.对 Serverless ...

  3. WTL改变对话框大小

    1.让对话框从CdialogResize类继承过来: class CMainDlg : public CDialogImpl<CMainDlg>, public CDoubleBuffer ...

  4. C指针右左法则

    摘录的别人的:  C语言所有复杂的指针声明,都是由各种声明嵌套构成的.如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法.不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出 ...

  5. 详解python的装饰器decorator

    装饰器本质上是一个python函数,它可以让其它函数在不需要任何代码改动的情况下增加额外的功能. 装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志,性能测试,事务处理,缓存, ...

  6. Codeforces_712_A

    http://codeforces.com/contest/712/problem/A 水题,写出来就看到规律了. #include<iostream> #include<cstri ...

  7. Keepalived & LVS: 实现web的负载均衡和高可用

    目录 1. 环境介绍2. LVS DR模型中Realserver上的准备3. ha上的准备4. 配置keepalived5. 测试Realserver的切换6. failback页面测试7. keep ...

  8. json-server的简单使用

    json-server是一个在前端本地运行,可以存储json数据的server(服务器),该服务器只支持 get 方法获取,不支持 post 方法获取,使用express工具可以使用post方法. V ...

  9. 自己用C语言写NXP S32K116 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 每次我有了新的EVA ...

  10. 获取tensorflow中变量的值

    names=[i.name for i in tf.all_variables()]for i in names: print i ker=tf.get_default_graph().get_ten ...