相信你已经摸清了

浏览器各种请求的套路

也知道了怎么在手机上进行请求和返回数据的抓取

那么接下来我们就开始来使用 python 了

代码 lu 起来

那么

怎么用 python 写各种请求呢?

今天要给大家介绍的就是

Urllib

 

这可是 python 内置的库

有了它

我们写代码就轻松了

腰也不疼了

腿也不酸了

头发也不秃了

那么怎么使用 Urllib 呢?

接下来

就是

学习 python 的正确姿势

 

 

在 Python 这个内置的 Urllib 库中

有这么 4 个模块

request

request模块是我们用的比较多的

就是用它来发起请求

所以我们重点说说这个模块

error

error模块呢,就是当我们在使用 request 模块遇到错了

就可以用它来进行异常处理

parse

parse模块就是用来解析我们的 URL 地址的,比如解析域名地址啦,URL指定的目录等

robotparser

这个用的就比较少了,它就是用来解析网站的 robot.txt

ok

了解了 urllib 之后

我们就用 python 代码来模拟请求吧

打开 pycharm

如果你还不太知道 pycharm 这个开发工具怎么玩的话

你可以看看这玩意

PyCharm使用教程:PyCharm常用技巧指南

当然

你喜欢别的编辑器也无所谓

反正我觉得

Pycharm

就是

首先我们来模拟请求百度吧

超简单

request 模块中的 urlopen 方法

首先我们导入 urllib 的请求模块

import urllib.request

我们在浏览器访问百度的时候

对于 python 来说

就是一句代码的事情

urllib.request.urlopen('http://www.baidu.com')

我们通过 request 模块的 urlopen 方法

直接用 Get 请求方式请求百度了

那么返回的内容就是和浏览器一样的

我们可以打印出来

response = urllib.request.urlopen('http://www.baidu.com')
print(response.read().decode('utf-8'))

我们执行

百度把源码返回给我们了

request 的 urlopen 方法

可以传入的参数主要有 3 个

urllib.request.urlopen(urldata=None, [timeout, ]*)

第一个 url 就是我们请求的链接

比如我们刚刚就请求百度

第二个参数 data

就是专门给我们 post 请求携带参数的

比如我们在登录的时候

可以把用户名密码封装成 data 传过去

在这里的 data 的值我们可以用 byte 的类型传递

第三个参数 timeout 就是设置请求超时时间

如果等好久服务器都没有给我们返回数据

我们就不鸟他了!

这就是  request 的 urlopen 主要用法。

urlopen 好像不错

但是

如果我们要欺骗服务器说我们是浏览器或者手机请求的呢?

这个时候我们需要添加请求头信息

也就是我们上次说的

request header

那么

这个时候

就该让 request 模块中的 Request 方法出场了

这个 Request 方法的参数多一些

主要的参数

urllib.request.Request(urldata=Noneheaders={}method=None)

我们除了定义 url 和 data 之外

我们还可以定义请求头信息

urlopen 默认是 Get 请求

当我们传入参数它就为 Post 请求了

而 Request 可以让我们自己定义请求的方式

这样我们就可以使用 Request 来封装我们的请求信息

我们来用 Request 玩一下吧

我们来模拟登陆「逼乎」吧

https://biihu.cc/

没错

就是那个山寨知乎的网站

与世界分享你的装逼技巧与见解

进入网站进行登录

我们来抓一下数据先

通过 Fiddler 可以看到我们的请求参数

这密码不加密的

然后我们再看看我们的请求头信息

好了

知道这些之后我们就可以来模拟登录了

导入 urllib

from urllib import request,parse
import ssl

在这里我们还要导入 ssl

因为逼乎这个b用的是 https

我们可以使用 ssl 未经验证的上下文

context = ssl._create_unverified_context()

接着定义一下我们的请求 url 和 header

url = 'https://biihu.cc//account/ajax/login_process/'
headers = {
#假装自己是浏览器
   'User-Agent':' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
}

再定义一下我们的请求参数

dict = {
'return_url':'https://biihu.cc/',
   'user_name':'xiaoshuaib@gmail.com',
   'password':'123456789',
   '_post_type':'ajax',
}

我们把请求的参数转化为 byte

data = bytes(parse.urlencode(dict),'utf-8')

然后我们就可以封装 request 了

req = request.Request(url,data=data,headers=headers,method='POST')

最后我们进行请求

response = request.urlopen(req,context=context)
print(response.read().decode('utf-8'))

ok

这样我们就模拟登录了

运行一下看看

{"rsm":{"url":"https:\/\/biihu.cc\/home\/first_login-TRUE"},"errno":1,"err":null}

可以看到我们成功登录逼乎了

ok

以上就是 Urllib 的常用使用方法了

(完)

扫一扫

 

顺手,点个好看

python爬虫03:那个叫做 Urllib 的库让我们的 python 假装是浏览器的更多相关文章

  1. python爬虫(2)——urllib、get和post请求、异常处理、浏览器伪装

    urllib基础 urlretrieve() urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 import urllib.request #urlretrieve(网址,本地文件 ...

  2. python爬虫04 | 长江后浪推前浪,Reuqests库把urllib库拍在沙滩上

    最近 有些朋友 看完小帅b的文章之后 把小帅b的表情包都偷了 还在我的微信 疯狂发表情包嘚瑟 我就呵呵了 只能说一句 盘他 还有一些朋友 看完文章不点好看 还来催更 小帅b也只能说一句 继续盘他   ...

  3. 3.Python爬虫入门三之Urllib和Urllib2库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...

  4. Python爬虫入门四之Urllib库的高级用法

    1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

  5. 转 Python爬虫入门四之Urllib库的高级用法

    静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我 ...

  6. 转 Python爬虫入门三之Urllib库的基本使用

    静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...

  7. 小白学 Python 爬虫(21):解析库 Beautiful Soup(上)

    小白学 Python 爬虫(21):解析库 Beautiful Soup(上) 人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前 ...

  8. 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. 小白学 Python 爬虫(23):解析库 pyquery 入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

随机推荐

  1. 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

    这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出 ...

  2. Angularjs+Bootstrap实现分页指令

    本插件的开发目的主要给前端同学使用,本人是专注于后台开发的,对css样式不熟悉,但逼于前端要求做一个共公组件方便日常开发,所以这个插件在样式上可能不适合大部分人,喜欢的拿走吧,不喜欢的也请别喷.  一 ...

  3. Mybatis:目录

    ylbtech-MyBatis:目录 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://ylbte ...

  4. Docker容器的使用和连接

    在上一篇文章<Docker从安装部署到Hello World>介绍了如何在CentOS7上安装Docker.这篇文章主要介绍一下Docker容器的使用和连接. vDocker 容器使用 1 ...

  5. 数据通讯与网络 第五版第24章 传输层协议-TCP协议部分要点

    上一博客记录了UDP协议的关键要点,这部分记录TCP协议的关键要点. 24.3 传输控制协议(TRANSMISSION CONTROL PROTOCOL) TCP(Transmission Contr ...

  6. 【区间DP】释放囚犯

    貌似和石子合并差不多 可能是我见的题太少了,所以都差不多 OK 算法分析 首先不难看出这是一道区间DP,那么,按照本蒟蒻的意思 区间DP==三个循环 for(int len=2;len<=n;l ...

  7. android 可拖动控件 ontouchevent

    首先附上文章的转载内容的链接: 学习android 可拖动事件首先需要对android的屏幕和touchevent参数建立一个详细的知识结构. 1.android坐标系统 一.首先明确一下 andro ...

  8. POJ 2823 线段树 Or 单调队列

    时限12s! 所以我用了线段树的黑暗做法,其实正解是用单调队列来做的. //By SiriusRen #include <cstdio> #include <cstring> ...

  9. DOM 介绍

    什么时DOM DOM:文档对象模型.DOM为文档提供了结构化表示,并定义了如何通过脚本来范文文档结构.目的起始就是为了能让js操作html元素而指定的一个规范. DOM就是由节点组成的. 解析过程 H ...

  10. Linux学习笔记--文件夹结构

    暂时先上一张图学习吧,先大致了解好,再进行深入的学习.