作者| 猪哥

来源 | 裸睡的猪

第一章主要讲解爬虫相关的知识如:http、网页、爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点。

今天这篇文章将是我们第二章的第一篇,我们从今天开始就正式进入实战阶段,后面将会有更多的实际案例。

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

一、Python有哪些网络库

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

  • Python2: httplib、httplib2、urllib、urllib2、urllib3、requests

  • Python3: httplib2、urllib、urllib3、requests

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

  • httplib/2:

    这是一个Python内置http库,但是它是偏于底层的库,一般不直接用

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

    一般这两个库都用不到,如果需要自己 封装网络请求可能会需要用到。

  • 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,这个后面猪哥也会为大家讲解。

二、requests介绍

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

1.首页

requests的官方文档(目前已支持中文)链接:http://cn.python-requests.org
源代码地址:https://github.com/kennethreitz/requests

从首页中让HTTP服务人类这几个字中我们便能看出,requests核心宗旨便是让用户使用方便,间接表达了他们设计优雅的理念。
注:PEP 20便是鼎鼎大名的Python之禅

警告:非专业使用其他 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 下完美运行

三、安装requests

pip install requests

如果是pip3则使用

pip3 install requests

如果你使用anaconda则可以

conda install requests

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

四、爬虫流程

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

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

  1. 确定需要爬取的网页

  2. 浏览器检查数据来源(静态网页or动态加载)

  3. 寻找加载数据url的参数规律(如分页)

  4. 代码模拟请求爬取数据

五、爬取某东商品页

猪哥就以某东商品页为例子带大家学习爬虫的简单流程,为什么以某东下手而不是某宝?因为某东浏览商品页不需要登录,简单便于大家快速入门!

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


ps:猪哥并不是在开车哦,为什么选这款商品?因为后面会爬取这款商品的评价做数据分析,是不是很刺激!

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

打开浏览器调试窗口是为了查看网络请求,看看数据是怎么加载的?是直接返回静态页面呢,还是js动态加载呢?鼠标右键然后点检查或者直接F12即可打开调试窗口,这里猪哥推荐大家使用Chrome浏览器,为什么?因为好用,程序员都在用!具体的Chrome如何调试,大家自行网上看教程!

打开调试窗口之后,我们就可以重新请求数据,然后查看返回的数据,确定数据来源。

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

我们可以看到第一个请求链接:https://item.jd.com/1263013576.html 返回的数据便是我们要的网页数据。因为我们是爬取商品页,所以不存在分页之说。

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

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

获取url链接之后我们来开始写代码吧

import requests

检查返回结果

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

六、requests库介绍

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

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

'http://httpbin.org/post', data = {

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

对于HTTP的几种请求方法,没做过RestFul API的同学并不是很清楚每个请求方式表达的含义,这里给大家列一下:

  • GET:

    获取用户列表:

    http://project.company.com/api/v1/users

    • GET:

      获取单个用户:

      http://project.company.com/api/v1/users/{uid}

    • POST:

      创建单个用户:

      http://project.company.com/api/v1/users/{uid}

    • PUT:

      完全替换用户:

      http://project.company.com/api/v1/users/{uid}

    • PATCH:

      局部更新用户:

      http://project.company.com/api/v1/users/{uid}

    • DELETE:

      删除单个用户:

      http://project.company.com/api/v1/users/{uid}

想了解requests更多使用方法请参考:http://cn.python-requests.org

后面猪哥也会用大量案例来一点一点学习requests库的一些使用技巧。

七、总结

今天为大家简单介绍了一下这个非常重要的库:requests,requests可以胜任很多简单的爬虫需求,它强大的功能以及优美的api得到一致的认同。

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

如果你有 有趣的爬虫案例或者想法,务必在下方留言,让我看看你们的骚操作~

【完】

—————————————

往期精彩:

  • 最担心的事情终于发生了,APP已经可以一键“脱掉”你的衣服了

  • 我造的假我自己打,Adobe推出“反PS”

  • 李彦宏被泼水,是“多数人的暴力”还是“群众的宣泄”

python爬取京东商品数据要先登录_Python爬虫的起点相关推荐

  1. python爬取京东商品数据要先登录_手把手教你用python 爬取京东评论

    本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取"Python之父"推荐的小蓝书,这些信息主要包括用户名.书名.评论等信息. 爬取的网址url ...

  2. python爬取京东商品数据要先登录_3分钟教你不用python也能爬数据

    想成为一名Data Scientist,需要掌握收集数据.利用Excel进行简单的描述性信息分析.利用机器学习神经网络等技术进行预测性及挖掘性数据分析.可视化呈现信息.最终得到商业Insights的能 ...

  3. python爬取京东商品数据要先登录_京东商品评论情感分析|文本数据预处理

    本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意.所以对于文本 ...

  4. Python爬取京东商品数据

    一.前言 由于京东反爬技术较强,使用常规方法爬取其数据行不通,且使用逆向分析技术又具有一定难度,所以本文将直接使用selenium爬取京东商品数据.若不知道怎么安装和配置selenium,请点击查阅笔 ...

  5. Python爬取京东商品评论数据

    一.前言 本文将承接笔者的上篇文章Python爬取京东商品数据,使用京东商品唯一id字段"sku"拼接url,得到真实的京东商品评论网址,进而解释数据并保存到文件中,所爬取到的数据 ...

  6. Selenium实战之Python+Selenium爬取京东商品数据

    实战目标:爬取京东商品信息,包括商品的标题.链接.价格.评价数量. 代码核心在于这几个部分: 其一:使用元素定位来获取页面上指定需要抓取的关键字: 其二:将页面上定位得到的数据永久存储到本地文件中. ...

  7. Python爬取京东商品评论

    京东商城的页面不是静态页面,其评论信息存放于json文件中,由ajax控制,所以我们在浏览器上看到的网页源代码和用Python爬下来的是不一样的,所以我们真正要爬取的是评论数据所存放的json文件. ...

  8. Python爬取京东商品评论和图片下载

    Python爬取京东商品评论和图片下载 代码仅供学习使用,切勿扩散并且频繁爬取网站 贴上代码和注释,方便自己下次看 import requests import time import json im ...

  9. python爬取京东商品代码_Python简单爬取京东商品列表

    #!/usr/bin/python3 # -*- coding: UTF-8 -*- import urllib.request import urllib.error import re impor ...

  10. Java爬取京东商品数据

    爬取京东商品数据 我把项目部署到了linux中,进行爬取,爬到了3000条手机信息,只是爬了一些简单的文本信息. 本文爬取的数据为京东手机信息 准备工作 导入爬取数据需要的依赖包 编写httpClie ...

最新文章

  1. 聊聊dubbo的Filter
  2. ARC下带CF前缀的类型与OC类型转换
  3. MAT之DT:DT实现根据乳腺肿瘤特征向量高精度预测肿瘤的是恶性还是良性
  4. python退出帮助系统help应该使用exit_python--help - tesion
  5. 数据类别不平衡/长尾分布?不妨利用半监督或自监督学习
  6. 老照片的复活,焕发生机与跃然纸上!这篇CVPR2020的论文彻底火了
  7. TypeScript里string和String,真不是仅仅是大小写的区别
  8. Shell 脚本实例
  9. 大数据各子项目的环境搭建之建立与删除软连接(博主推荐)
  10. pandas数据处理实践三(DataFrame.apply、merge、rename,数据预处理、DataFrame.drop_duplicates去重)
  11. 30K iOS程序员的简述:如何快速进阶成为高级开发人员
  12. 15. module create
  13. ildasm.exe查看dll库支持的Net版本
  14. mysql ndb 测试_Mysql ndb_Cluster 测试环境搭建
  15. flowchart图
  16. spring boot 中用到的thymeleaf (模板引擎)
  17. CAD全版本软件安装包(含最新2023)
  18. 药品大湾区分中心牵手易臣,OA系统助力机构高效办公
  19. 英文月份简写、星期简写
  20. c语言中isupper用法,python之函数用法isupper()

热门文章

  1. h264html实时播放,H5播放H264之websocket
  2. 【问题集合】3dsMax贴图模糊(2016)
  3. 打开计算机任务栏有桌面没,打开的窗口在任务栏上显示不出来?解决办法
  4. 使用NRF52xx sniffer抓取BLE包
  5. PowerDesign介绍与使用
  6. 程序员去美国工作:奋斗在加州
  7. Topaz Sharpen A I人工智能清晰锐化PS插件
  8. java实现人民币金额大写
  9. html文本框显示当前时间,javascript  在文本框中显示系统当前日期(年-月-日 时:分:秒)...
  10. Excel-图表与文本框/图片的组合