用pycharm写urllib请求_Python爬虫入门:那个叫做Urllib的库让我们的python假装是浏览器...

f902564105eebf186fe493ba33a15cd3.png

相信你已经摸清了

浏览器各种请求的套路

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

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

代码 lu 起来

那么

怎么用 python 写各种请求呢?

今天要给大家介绍的就是

Urllib

这可是 python 内置的库

有了它

我们写代码就轻松了

腰也不疼了

腿也不酸了

头发也不秃了

b25c3ffe72bcc117b28382923e619f6d.png

那么怎么使用 **Urllib **呢?

接下来

就是

学习 python 的正确姿势

在 Python 这个内置的 Urllib 库中

有这么 4 个模块

request

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

就是用它来发起请求

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

error

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

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

parse

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

robotparser

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

ok

了解了 urllib 之后

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

2561455cec47d6fab7287fe8e7a39b82.png

打开 pycharm

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

你可以看看这玩意

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

当然

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

反正我觉得

Pycharm

就是

2f0570445e18700cc744ed78c4140650.png

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

超简单

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'))

我们执行

c8f4544bfced7f3f33974f92c3818019.png

百度把源码返回给我们了

634c2ff5bfa74bb8093f7d51e74c0602.png

request 的 urlopen 方法

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

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

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

比如我们刚刚就请求百度

第二个参数 data

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

比如我们在登录的时候

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

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

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

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

我们就不鸟他了!

这就是 request 的 urlopen 主要用法。

d17d33fd410c286fc8300a485135b1dd.png

urlopen 好像不错

但是

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

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

也就是我们上次说的

request header

那么

这个时候

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

这个 Request 方法的参数多一些

主要的参数

urllib.request.Request(url, data=None, headers={}, method=None)

我们除了定义 url 和 data 之外

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

urlopen 默认是 Get 请求

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

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

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

2e78f89795e5c5795fd4f95c4f6e39a2.png

我们来用 Request 玩一下吧

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

https://biihu.cc/

没错

就是那个山寨知乎的网站

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

e2bbb73003266875d3fe72c960467528.png

进入网站进行登录

我们来抓一下数据先

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

955e2b8d5222dc09eb3107304678a677.png

这密码不加密的

e23974be13a2bde537c4682166b7f9c9.png

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

d9c2bddba6e474215bb2c3d303423d00.png

好了

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

导入 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}

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

d3ca548c951ed736f371d7b4cbda8e02.png

ok

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

(完)

python长路漫漫,正在路上奔跑的小伙伴可以关注我们哦~

b7e657aa4976dee1cd6c33a4352b2177.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值