Python学习教程:这里是Python爬虫的起点,抢占资源啦

今天跟你们出的这篇文章,是从爬虫的起点开始讲起,这里的Python学习教程,一篇文章带你贯穿爬虫始末!以前也够跟你们出过相关的Python相关的Python学习教程,伙伴们也能够翻阅一下之前的!html


Python学习教程:这里是Python爬虫的起点,抢占资源啦



爬虫系列文章的第一篇,这里便为你们讲解了HTTP原理,不少人好奇:好好的讲爬虫和HTTP有什么关系?其实咱们常说的爬虫(也叫网络爬虫)就是使用一些网络协议发起的网络请求,而目前使用最多的网络协议即是HTTP/S网络协议簇。python

1、Python有哪些网络库程序员

在真实浏览网页咱们是经过鼠标点击网页而后由浏览器帮咱们发起网络请求,那在Python中咱们又如何发起网络请求的呢?答案固然是库,具体哪些库?猪哥给你们列一下:web

  • Python2: httplib、httplib二、urllib、urllib二、urllib三、requests
  • Python3: httplib二、urllib、urllib三、requests


Python网络请求库有点多,并且还看见网上还都有用过的,那他们之间有何关系?又该如何选择?api

httplib/2:浏览器


这是一个Python内置http库,可是它是偏于底层的库,通常不直接用。缓存

而httplib2是一个基于httplib的第三方库,比httplib实现更完整,支持缓存、压缩等功能。安全

通常这两个库都用不到,若是须要本身 封装网络请求可能会须要用到。bash


Python学习教程:这里是Python爬虫的起点,抢占资源啦



urllib/urllib2/urllib3:网络


urlliib是一个基于httplib的上层库,而urllib2和urllib3都是第三方库,urllib2相对于urllib增长一些高级功能,如:HTTP身份验证或Cookie等,在Python3中将urllib2合并到了urllib中。urllib3提供线程安全链接池和文件post等支持,与urllib及urllib2的关系不大。

requests:


requests库是一个基于urllib/3的第三方网络库,它的特色是功能强大,API优雅。由上图咱们能够看到,对于http客户端python官方文档也推荐咱们使用requests库,实际工做中requests库也是使用的比较多的库。

综上所述,咱们选择选择requests库做为咱们爬虫入门的起点。另外以上的这些库都是同步网络库,若是须要高并发请求的话可使用异步网络库:aiohttp,这个后面猪哥也会为你们讲解。

2、requests介绍

但愿你们永远记住:学任何一门语言,都不要忘记去看看官方文档。也许官方文档不是最好的入门教程,但绝对是最新、最全的教学文档!

1.首页

requests核心宗旨即是让用户使用方便,间接表达了他们设计优雅的理念。

【注意】:非专业使用其余 HTTP 库会致使危险的反作用,包括:安全缺陷症、冗余代码症、从新发明轮子症、啃文档症、抑郁、头疼、甚至死亡。

2.功能特性

都说requests功能强大,那咱们来看看requests到底有哪些功能特性吧:

  • Keep-Alive & 链接池
  • 国际化域名和 URL
  • 带持久 Cookie 的会话
  • 浏览器式的 SSL 认证
  • 自动内容解码
  • 基本/摘要式的身份认证
  • 优雅的 key/value Cookie
  • 自动解压
  • Unicode 响应体
  • HTTP(S) 代理支持
  • 文件分块上传
  • 流下载
  • 链接超时
  • 分块请求
  • 支持 .netrc


requests 彻底知足今日 web 的需求。Requests 支持 Python 2.6—2.7以及3.3—3.7,并且能在 PyPy 下完美运行。

3、安装requests

pip 安装:

pip install requests


若是是pip3则使用

pip3 install requests


若是你使用anaconda则能够

conda install requests


若是你不想用命令行,可在pycharm中这样下载库


Python学习教程:这里是Python爬虫的起点,抢占资源啦

4、爬虫流程

下图是以前工做总结的一个项目开发流程,算是比较详细,在开发一个大型的项目真的须要这么详细,否则项目上线出故障或者修改需求都没法作项目复盘,到时候程序员就有可能背锅祭天。。。

Python学习教程:这里是Python爬虫的起点,抢占资源啦


言归正传,给你们看项目的开发流程是想引出爬虫爬取数据的流程:

  1. 肯定须要爬取的网页
  2. 浏览器检查数据来源(静态网页or动态加载)
  3. 寻找加载数据url的参数规律(如分页)
  4. 代码模拟请求爬取数据

5、爬取某东商品页

以某东商品页为例子带你们学习爬虫的简单流程,为何以某东下手而不是某宝?由于某东浏览商品页不须要登陆,简单便于你们快速入门!

1.第一步:浏览器中找到你想爬取的商品


Python学习教程:这里是Python爬虫的起点,抢占资源啦


Python学习教程:这里是Python爬虫的起点,抢占资源啦


Python学习教程:这里是Python爬虫的起点,抢占资源啦


ps:并非在开车哦,为何选这款商品?由于后面会爬取这款商品的评价作数据分析,是否是很刺激!


2.第二步:浏览器检查数据来源

打开浏览器调试窗口是为了查看网络请求,看看数据是怎么加载的?是直接返回静态页面呢,仍是js动态加载呢?


Python学习教程:这里是Python爬虫的起点,抢占资源啦



鼠标右键而后点检查或者直接F12便可打开调试窗口,这里猪哥推荐你们使用Chrome浏览器,为何?由于好用,程序员都在用!具体的Chrome如何调试,你们自行网上看教程!


打开调试窗口以后,咱们就能够从新请求数据,而后查看返回的数据,肯定数据来源。


Python学习教程:这里是Python爬虫的起点,抢占资源啦



3.第三步:寻找加载数据url的参数规律

咱们能够看到第一个请求连接:https://item.jd.com/1263013576.html 返回的数据即是咱们要的网页数据。由于咱们是爬取商品页,因此不存在分页之说。


Python学习教程:这里是Python爬虫的起点,抢占资源啦



固然价格和一些优惠券等核心信息是经过另外的请求加载,这里咱们暂时不讨论,先完成咱们的第一个小例子!

4.第四步:代码模拟请求爬取数据

获取url连接以后咱们来开始写代码吧

import requestsdef spider_jd():
 """爬取京东商品页"""
 url = 'https://item.jd.com/1263013576.html'
 try:
 r = requests.get(url) # 有时候请求错误也会有返回数据
 # raise_for_status会判断返回状态码,若是4XX或5XX则会抛出异常
 r.raise_for_status()
 print(r.text[:500]) except:
 print('爬取失败')if __name__ == '__main__':
 spider_jd()
复制代码

检查返回结果


Python学习教程:这里是Python爬虫的起点,抢占资源啦



至此咱们就完成了某东商品页的爬取,虽然案例简单,代码不多,可是爬虫的流程基本差很少,但愿想学爬虫的同窗本身动动手实践一把,选择本身喜欢的商品抓取一下,只有本身动手才能真的学到知识!

6、requests库介绍


上面咱们使用了requests的get方法,咱们能够查看源码发现还有其余几个方法:post、put、patch、delete、options、head,他们就是对应HTTP的请求方法。

Python学习教程:这里是Python爬虫的起点,抢占资源啦


这里简单给你们列一下,后面会用大量的案例来用然后学,毕竟枯燥的讲解没人愿意看。

requests.post('http://httpbin.org/post', data = {'key':'value'})

requests.patch('http://httpbin.org/post', data = {'key':'value'})

requests.put('http://httpbin.org/put', data = {'key':'value'})

requests.delete('http://httpbin.org/delete')

requests.head('http://httpbin.org/get')

requests.options('http://httpbin.org/get')

注:httpbin.org是一个测试http请求的网站,能正常回应请求

7、总结

今天为你们简单介绍了一下这个很是重要的库:requests,requests能够胜任不少简单的爬虫需求,它强大的功能以及优美的api获得一致的认同。

有人多同窗会问:Python爬虫到什么境界才算是入门?你会熟练使用requests库去实现一些简单的爬虫功能就算入门,并非说须要会各类框架才算是入门,相反能使用低级工具实现功能的才更具潜力!

若是你有 有趣的爬虫案例或者想法,能够留言哈,根你们分享一下你的骚操做~

更多的Python学习教程也会继续为你们更新!

相关文章
相关标签/搜索