python爬虫03:那个叫做 Urllib 的库让我们的 python 假装是浏览器
相信你已经摸清了
浏览器各种请求的套路
也知道了怎么在手机上进行请求和返回数据的抓取
那么接下来我们就开始来使用 python 了
代码 lu 起来

那么
怎么用 python 写各种请求呢?
今天要给大家介绍的就是
Urllib
这可是 python 内置的库
有了它
我们写代码就轻松了
腰也不疼了
腿也不酸了
头发也不秃了

那么怎么使用 Urllib 呢?
恩
接下来
就是

在 Python 这个内置的 Urllib 库中
有这么 4 个模块
request
request模块是我们用的比较多的
就是用它来发起请求
所以我们重点说说这个模块
error
error模块呢,就是当我们在使用 request 模块遇到错了
就可以用它来进行异常处理
parse
parse模块就是用来解析我们的 URL 地址的,比如解析域名地址啦,URL指定的目录等
robotparser
这个用的就比较少了,它就是用来解析网站的 robot.txt
ok
了解了 urllib 之后
我们就用 python 代码来模拟请求吧

打开 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(url, data=None, [timeout, ]*)
第一个 url 就是我们请求的链接
比如我们刚刚就请求百度
第二个参数 data
就是专门给我们 post 请求携带参数的
比如我们在登录的时候
可以把用户名密码封装成 data 传过去
在这里的 data 的值我们可以用 byte 的类型传递
第三个参数 timeout 就是设置请求超时时间
如果等好久服务器都没有给我们返回数据
我们就不鸟他了!
这就是 request 的 urlopen 主要用法。

urlopen 好像不错
但是
如果我们要欺骗服务器说我们是浏览器或者手机请求的呢?
这个时候我们需要添加请求头信息
也就是我们上次说的
request header
那么
这个时候
就该让 request 模块中的 Request 方法出场了
这个 Request 方法的参数多一些
主要的参数
urllib.request.Request(url, data=None, headers={}, 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 假装是浏览器的更多相关文章
- python爬虫(2)——urllib、get和post请求、异常处理、浏览器伪装
urllib基础 urlretrieve() urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 import urllib.request #urlretrieve(网址,本地文件 ...
- python爬虫04 | 长江后浪推前浪,Reuqests库把urllib库拍在沙滩上
最近 有些朋友 看完小帅b的文章之后 把小帅b的表情包都偷了 还在我的微信 疯狂发表情包嘚瑟 我就呵呵了 只能说一句 盘他 还有一些朋友 看完文章不点好看 还来催更 小帅b也只能说一句 继续盘他 ...
- 3.Python爬虫入门三之Urllib和Urllib2库的基本使用
1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...
- Python爬虫入门四之Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...
- 转 Python爬虫入门四之Urllib库的高级用法
静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我 ...
- 转 Python爬虫入门三之Urllib库的基本使用
静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...
- 小白学 Python 爬虫(21):解析库 Beautiful Soup(上)
小白学 Python 爬虫(21):解析库 Beautiful Soup(上) 人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前 ...
- 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(23):解析库 pyquery 入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
随机推荐
- Corona 不同设备分辨率适应
移动平台下,不同设备的宽高比不同,那么必然存在与游戏设计时的宽高比不一致的情况,Corona的解决方案是定义了一个虚拟的屏幕高宽,比如1024*768,然后在不同设备上通过定义的适应模式去调整这个虚拟 ...
- SharePoint 2013 改动表单认证登录页面
前 言 之前的博客我们介绍了怎样为SharePoint配置表单登陆,可是.登陆页面是丑.非常丑.非常丑.特别非常丑! 我们如今就介绍一下怎样定制SharePoint表单登陆页面! SharePoint ...
- Zoj 3535 Gao the String II (AC自己主动机+dp)
题目大意: 用集合A中的串构造出一个串,使之让很多其它的setB中的串成为他的子串. 思路分析: 和 Codeforces 86C 几乎相同. 只是这里是要用A中的构造. 先用A 和 B的串构造一个自 ...
- HDU 5289 Assignment (ST算法区间最值+二分)
题目链接:pid=5289">http://acm.hdu.edu.cn/showproblem.php?pid=5289 题面: Assignment Time Limit: 400 ...
- java js url传参中文乱码
String item = this.getRequest().getParameter("item"); item = new String(item.getBytes(&quo ...
- VS2010中文注释带红色下划线的解决方法
环境:Visual Studio 2010 问题:代码中出现中文后会带下划线,很多时候感觉很不舒服.找了很久的原因没找到,后来无意中在VisualAssist X里找到了解决办法. 1.安装完Visu ...
- PCB MS SQL 行转列(动态拼SQL)
一.原数据: SELECT inman,indate FROM [fp_db].[dbo].[ppezhpbb] WHERE indate > '2016-5-1' AND indate < ...
- Django:提交表单报错:RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have A
Django:提交表单报错:RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you ...
- django-2的路由层(URLconf)
URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码 ...
- iframe弹出窗体丢失焦点的问题
好像在不同的浏览器都有这个现象,用javascript弹出一个iframe的窗口,第一次input的焦点是正常的, 然后弹出第二次的时候,选择,按钮都可以获取到,但是input无法获得焦点,而且页面不 ...