上周学习了Python urllib使用(一),Python urllib使用(二),对Python HTTP请求有了一些了解,但操作起来太麻烦,需要写很多的Opener和Handler,在进行登陆,Cookie等需要写很多代码,这一点也不Python。今天来学习Python 更为强大的HTTP库。看看官网介绍你就懂。
Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。
警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症、冗余代码症、重新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。
安装
发送请求
Get请求
传递参数
结果:
定制请求头
requests可以指定请求头,url路径等等一些骚操作。
抓网页
上一篇文章写了正则表达式,我们可以在这试试,来一个抓取直呼主题标题的爬虫:
上面的我们抓取的知乎主题标题。如果我们想抓取图片,看下边
抓图片
因为图片,视频属于二进制,要将二进制文件保存成对应的文件:
Post请求
上面我们使用了Requests的Get请求,下面看看Post请求看看:
Post Multipart-Encoded(多编码)
Session和Cookie
Requests Cookie使用
Requests Session使用
以上我们所有的都没有涉及会话维持,如果我们登陆了一个网站,获取用户信息后的后续操作如果没有会话维持都会出问题,不会携带用户标志。那么我们如何保持长时间的爬取数据呢。那就要用到session。
这样我们就可以保持所有请求在同一个会话中执行。
后面记录一些常用操作:
SSL
Python正则
上一篇文章我们就记录了正则表达式,正好使用在这个地方。re是Python的正则库,下面用一些实例来学习Python中正则的使用。
match()
匹配目标
上面我们得到了匹配结果,如果想从匹配的字符串获取目标,比如1234567,我们可以把对用的表达式用()括起来,比如这样:
search()
前面使用的Match()是从字符串的开始匹配,如果匹配不成功,那就返回 ,这样不太方便,当然也可以使用正则来实现。不过Python有更好的实现,那就是 .
和 都是匹配第一个内容,现实中的爬虫不可能只抓取一个,如果想获取全部内容那就要使用
findall()
sub()
正则表达式除了提取信息,我们有时候还需要借助于它来修改文本,如果我们想把字符串中的数字全部删掉,该如何操作呢?
compile()
前面我们所讲的方法都是用来处理字符串的方法,最后再介绍一个 compile() 方法,这个方法可以讲正则字符串编译成正则表达式对象,以便于在后面的匹配中复用。
结语
上面讲了Python Requests的基本使用,想要深入学习可以查看官方文档,还对正则进行了巩固,学习了Python re的使用。明天使用两个例子对上面学习的知识进行整合。
猫眼电影排行。
百度图片抓取。
领取专属 10元无门槛券
私享最新 技术干货