12行简单的Python代码,初窥爬虫的秘境

马哥Linux运维 2018-06-07 09:17 次阅读

往往不少童鞋写论文苦于数据获取艰难,辗转走上爬虫之路;

许多分析师做舆情监控或者竞品分析的时候,也常常使用到爬虫。

今天,本文将带领小伙伴们通过12行简单的Python代码,初窥爬虫的秘境。

爬虫目标

本文采用requests + Xpath,爬取豆瓣电影《黑豹》部分短评内容。

运行以上的爬虫脚本,我们得以见证奇迹

爬虫结果与原网页内容的对比,完全一致

通过tqdm模块实现了良好的交互

工具准备

chrome浏览器(分析HTTP请求、抓包)

安装Python 3及相关模块(requests、lxml、pandas、time、random、tqdm)requests:用来简单请求数据lxml:比Beautiful Soup更快更强的解析库pandas:数据处理神器time:设置爬虫访问间隔防止被抓random:随机数生成工具,配合time使用tqdm:交互好工具,显示程序运行进度

基本步骤

网络请求分析

网页内容解析

数据读取存储

涉及知识点

爬虫协议

http请求分析

requests请求

Xpath语法

Python基础语法

Pandas数据处理

爬虫协议

爬虫协议即网站根目录之下的robots.txt文件,用来告知爬虫者哪些可以拿哪些不能偷,其中Crawl-delay告知了网站期望的被访问的间隔。(为了对方服务器端同学的饭碗,文明拿数据,本文将爬虫访问间隔设置为6-9秒的随机数)

豆瓣网站的爬虫协议

HTTP请求分析

使用chrome浏览器访问《黑豹》短评页面https://movie.douban.com/subject/6390825/comments?sort=new_score&status=P,按下F12,进入network面板进行网络请求的分析,通过刷新网页重新获得请求,借助chrome浏览器对请求进行筛选、分析,找到那个Ta

豆瓣短评页面请求分析

通过请求分析,我们找到了目标url为'https://movie.douban.com/subject/6390825/comments?start=0&limit=20&sort=new_score&status=P&percent_type=',并且每次翻页,参数start将往上增加20(通过多次翻页尝试,我们发现第11页以后需要登录才能查看,且登录状态也仅展示前500条短评。作为简单demo,本文仅对前11页内容进行爬取)

requests请求

通过requests模块发送一个get请求,用content方法获取byte型数据,并以utf-8重新编码;然后添加一个交互,判断是否成功获取到资源(状态码为200),输出获取状态

请求详情分析

(除了content,还有text方法,其返回unicode字符集,直接使用text方法遇到中文的话容易出现乱码)

Xpath语法解析

获取到数据之后,需要对网页内容进行解析,常用的工具有正则表达式、Beautiful Soup、Xpath等等;其中Xpath又快又方便。此处我们通过Xpath解析资源获取到了前220条短评的用户名、短评分数、短评内容等数据。(可借助chrome的强大功能直接复制Xpath,Xpath语法学习http://www.runoob.com/xpath/xpath-tutorial.html)

数据处理

获取到数据之后,我们通过list构造dictionary,然后通过dictionary构造dataframe,并通过pandas模块将数据输出为csv文件

结语与彩蛋

本例通过requests+Xpath的方案,成功爬取了电影《黑豹》的部分豆瓣短评数据,为文本分析或其他数据挖掘工作打好了数据地基。本文作为demo,仅展示了简单的爬虫流程,更多彩蛋如请求头、请求体信息获取、cookie、模拟登录、分布式爬虫等请关注后期文章更新哟。

热门推荐

原文标题:12行Python暴力爬《黑豹》豆瓣短评

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

Python系统库itertools的详细资料介绍

很多人都致力于把Python代码写得更Pythonic,一来更符合规范且容易阅读,二来一般Pytho....

的头像 马哥Linux运维 发表于 06-18 17:08 55次 阅读
Python系统库itertools的详细资料介绍

一些能够解决生活中一些具体问题的常用算法的整理集合

这是一篇八千字的长文,是一些算法笔记的整理集合,希望能给你帮助。

的头像 算法与数据结构 发表于 06-18 11:41 121次 阅读
一些能够解决生活中一些具体问题的常用算法的整理集合

Python 转向 Go语言的9大原因和3大缺点

转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有一个使用过它时。今年 Stream 团队的....

发表于 06-17 07:40 61次 阅读
Python 转向 Go语言的9大原因和3大缺点

分享自己用于搞定数据处理和机器学习的开发环境

如果你想要针对每个环境独立控制对各类 pip 包的管理,那么这就是一款绝佳的工具比如,你可以为 We....

的头像 TensorFlow 发表于 06-15 09:53 267次 阅读
分享自己用于搞定数据处理和机器学习的开发环境

编程初学者应该学习什么语言好?

此外,根据 Hacker News 招聘趋势排名,越来越多的公司对掌握 Python 技能的开发者感....

的头像 电子发烧友网工程师 发表于 06-15 09:02 1162次 阅读
编程初学者应该学习什么语言好?

专业python web编程工具

发表于 06-12 16:23 208次 阅读
专业python web编程工具

Python编程电子教材:从入门到实践让你快速学会Python编程

 本书旨在让你成为优秀的程序员,具体地说,是优秀的Python程序员。通过阅读本书,你将迅速掌握编程....

发表于 06-11 08:00 116次 阅读
Python编程电子教材:从入门到实践让你快速学会Python编程

Python爬虫速成指南让你快速的学会写一个最简单的爬虫

本文主要内容:以最短的时间写一个最简单的爬虫,可以抓取论坛的帖子标题和帖子内容。 本文受众:没写过....

的头像 马哥Linux运维 发表于 06-10 09:57 409次 阅读
Python爬虫速成指南让你快速的学会写一个最简单的爬虫

2018年数据科学和机器学习工具调查

近日,数据科学网站KDnuggets发布 2018年数据科学和机器学习工具调查结果。

的头像 算法与数据结构 发表于 06-07 17:05 698次 阅读
2018年数据科学和机器学习工具调查

请问python可以替代shell吗?

发表于 06-07 14:57 210次 阅读
请问python可以替代shell吗?

基于Keras搭建的深度学习网络示例

Python软件基金会成员(Contibuting Member)Vihar Kurama简明扼要地....

的头像 论智 发表于 06-06 11:21 537次 阅读
基于Keras搭建的深度学习网络示例

Python可以做什么?Python爆红的原因是什么?

微软在之前开启了一个针对 Excel 功能的话题,用以收集用户的反馈。随后有用户提议让 Python....

的头像 电子发烧友网工程师 发表于 06-06 09:38 458次 阅读
Python可以做什么?Python爆红的原因是什么?

哪些平台支持Python?

发表于 06-05 16:41 231次 阅读
哪些平台支持Python?

如何让爬虫更简单的使用这些代理?

采集回来的代理如何存储?这里不得不推荐一个高性能支持多种数据结构的NoSQL数据库SSDB,用于代理....

的头像 马哥Linux运维 发表于 06-04 17:03 389次 阅读
如何让爬虫更简单的使用这些代理?

Python取代R成为最受欢迎的编程语言

近日,KDnuggets网站公布了2018年度的数据科学和机器学习工具调查结果。2300多名参与者对....

的头像 新智元 发表于 06-04 15:19 375次 阅读
Python取代R成为最受欢迎的编程语言

Python Editor如何轻松玩转MicroPython?

发表于 06-04 14:36 151次 阅读
Python Editor如何轻松玩转MicroPython?

Python CMOS传感器演示

这视频使用安森美半导体创新的Python图像传感器,展示标准的CMOS传感器用于汽车影像系统及更多通....

的头像 EE techvideo 发表于 06-04 13:47 190次 观看
Python CMOS传感器演示

学Python到底好不好?Python程序员月薪多少?

开发岗位的高薪,和互联网的高速发展,吸引了越来越多人加入学习编程的队伍。但是学哪种语言入门?这个问题....

的头像 电子发烧友网工程师 发表于 06-03 09:45 552次 阅读
学Python到底好不好?Python程序员月薪多少?

Python和人工智能的关系及应用的详细资料概述

工智能掀起了世界的新一波科技浪潮。那么Python究竟和人工智能什么关系,为什么人工智能把Pytho....

的头像 机器人博览 发表于 06-02 11:08 732次 阅读
Python和人工智能的关系及应用的详细资料概述

一文搞懂 Python 正则表达式用法

Python正则,这么用就对了!

的头像 马哥Linux运维 发表于 06-02 10:47 677次 阅读
一文搞懂 Python 正则表达式用法

Python3函数知识大全包括定义,调用,参数,变量等详细举例说明

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重....

的头像 马哥Linux运维 发表于 06-02 10:33 556次 阅读
Python3函数知识大全包括定义,调用,参数,变量等详细举例说明

Python的就业前景怎么样

发表于 05-30 17:45 302次 阅读
Python的就业前景怎么样

从零开始学习用Python构建神经网络

内容涵盖神经网络定义、损失函数、前向传播、反向传播、梯度下降算法,对于想要了解深度学习运作原理的各位....

的头像 人工智能和机器人研究院 发表于 05-30 08:54 2688次 阅读
从零开始学习用Python构建神经网络

一个基于卡片的增强现实应用程序

一旦找到特征,我们应该找到它们提供的信息的适当表示形式。这将允许我们在其它图像中寻找它们,并且还可以....

的头像 马哥Linux运维 发表于 05-29 18:31 596次 阅读
一个基于卡片的增强现实应用程序

数据分析为什么用Python?只需4代码就可以画地图

用 Python 4行代码即可以画出一个地图,8行代码画出一个中国地图!

的头像 马哥Linux运维 发表于 05-28 16:16 742次 阅读
数据分析为什么用Python?只需4代码就可以画地图

大神教你怎么用Python抓取婚恋网用户数据,用决策树生成自己择偶观

机器学习中,决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个....

的头像 悟空智能科技 发表于 05-28 10:53 631次 阅读
大神教你怎么用Python抓取婚恋网用户数据,用决策树生成自己择偶观

Python无监督学习的几种聚类算法包括K-Means聚类,分层聚类等详细概述

无监督学习是机器学习技术中的一类,用于发现数据中的模式。本文介绍用Python进行无监督学习的几种聚....

的头像 新智元 发表于 05-27 09:59 1357次 阅读
Python无监督学习的几种聚类算法包括K-Means聚类,分层聚类等详细概述

Python软件包要在选定的构建(Build)系统上运行时,应该如何指定其依赖关系

二是YAML默认本身并不安全。该规范允许在处理配置数据时最好避免代码的任意执行。当然可以避免这种行为....

的头像 马哥Linux运维 发表于 05-25 17:31 597次 阅读
Python软件包要在选定的构建(Build)系统上运行时,应该如何指定其依赖关系

人工智能时代爆发的Python,我们到底该不该选择Python?

它具备了比以前传统的脚本语言更好的可重用性,维护起来也很方便。与现在流行的编程语言 Java、C、C....

的头像 电子发烧友网工程师 发表于 05-24 16:01 688次 阅读
人工智能时代爆发的Python,我们到底该不该选择Python?

Python快速入门方法

发表于 05-24 15:37 436次 阅读
Python快速入门方法

为什么你觉得旧代码异常混乱?因为读代码更难

但是,认为新代码比旧代码好简直就是荒谬。旧代码是已经运行过的,测试过的。无数的bug在被发现前都上线....

的头像 机器学习算法与人工智能 发表于 05-23 11:07 421次 阅读
为什么你觉得旧代码异常混乱?因为读代码更难

Python语言在人工智能中的功能及优势

Python语言是一种面向对象、直译式计算机程序设计语言,Python语法简捷、清晰和易读。Pyth....

发表于 05-22 14:29 580次 阅读
Python语言在人工智能中的功能及优势

优化Stellaris®微控制器的代码性能和尺寸应用笔记

本节更详细地描述了表1中总结的因素,并提供了改进代码性能和大小的示例代码。

发表于 05-22 09:39 41次 阅读
优化Stellaris®微控制器的代码性能和尺寸应用笔记

Python相较其它语言具有怎样的优势

就个人发展而言,选择学习的技术与要就读的大学可谓同等重要。如果决定做错了,那往往会收到一堆麻烦,而不....

的头像 嵌入式资讯精选 发表于 05-21 16:19 1064次 阅读
Python相较其它语言具有怎样的优势

Python机器学习经典实例电子版和附带源码

《Python机器学习经典实例》中文电子完整版及附赠代码 ,分享给大家学习。

发表于 05-21 14:57 153次 阅读
Python机器学习经典实例电子版和附带源码

从源码来看isinstance的检测过程

取的是 PyTYPE(self) ,也就是说指定的 metaclass 里面需要定义 instanc....

的头像 马哥Linux运维 发表于 05-21 10:12 310次 阅读
从源码来看isinstance的检测过程

Python如何奠定AI领域的老大地位

在所有编程语言里,Python并不算萌新,从1991年发布第一个版本,至今已经快30年了。最近几年,....

的头像 机器人博览 发表于 05-20 11:43 903次 阅读
Python如何奠定AI领域的老大地位

12种用于数据分析的Pandas技巧可用来学习Python详细概述

如果你正开始学习Python,而且目标是数据分析,相信NumPy、SciPy、Pandas会是你进阶....

的头像 论智 发表于 05-19 11:40 796次 阅读
12种用于数据分析的Pandas技巧可用来学习Python详细概述

如何由浅入深的学习编程语言?学习一门编程语言的大致框架

每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景。现代软件行业,想一门....

的头像 C语言编程设计 发表于 05-19 11:07 819次 阅读
如何由浅入深的学习编程语言?学习一门编程语言的大致框架

Python学习爬虫掌握的库资料大全和框架的选择的分析

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。 Pyth....

的头像 马哥Linux运维 发表于 05-19 10:45 1128次 阅读
Python学习爬虫掌握的库资料大全和框架的选择的分析

如何写一个简短(200行)的Python脚本

get_face_mask()的定义是为一张图像和一个标记矩阵生成一个遮罩,它画出了两个白色的凸多边....

的头像 悟空智能科技 发表于 05-18 09:37 311次 阅读
如何写一个简短(200行)的Python脚本

这已经不是我所了解的Python了!

众所周知由于搭上AI的专车,Python已经火到不能再火的地步了,薪酬和需求也是高出其他语言一大截(....

的头像 人工智能头条 发表于 05-18 09:25 1393次 阅读
这已经不是我所了解的Python了!

在 MaxCompute UDF 中运行 Scipy

发表于 05-17 19:30 330次 阅读
在 MaxCompute UDF 中运行 Scipy

涨知识!iPad还可以运行Python代码

同学们用Python处理数据科学问题。其中最让人头疼的,就是运行环境的安装。实事求是地讲,参加工作坊....

的头像 人间烟火123 发表于 05-17 18:03 480次 阅读
涨知识!iPad还可以运行Python代码

【产品功能】配置网卡从此与关机无缘,弹性网卡支持热插拔功能

发表于 05-15 22:49 279次 阅读
【产品功能】配置网卡从此与关机无缘,弹性网卡支持热插拔功能

python中的字典(dict)对象以及其使用方法

本文通过以英文的形式全面讲解了python中的字典(dict)对象以及其使用方法。

发表于 05-15 10:00 36次 阅读
python中的字典(dict)对象以及其使用方法

机器学习算法与Python学习简单的编码规范

整体使用英文书写方式来使用空格,即仅在逗号、分号后面添加1个空格,其他任何符号如圆括号、方括号、花括....

的头像 马哥Linux运维 发表于 05-14 14:45 666次 阅读
机器学习算法与Python学习简单的编码规范

代码行数最多的 Python 项目是什么 我猜你不知道

而这世界上有的是著名的开源项目,也有像 Github、Instagram 这样流量巨大的知名网站是基....

的头像 马哥Linux运维 发表于 05-14 11:19 366次 阅读
代码行数最多的 Python 项目是什么  我猜你不知道

如何在嵌入式平台上玩转Python

它的主处理器为ARM CORTEX-M4系列的STM32F405,最高工作频率168MHz,利用意法....

的头像 21ic电子网 发表于 05-14 08:59 788次 阅读
如何在嵌入式平台上玩转Python

“菜鸟”程序员和“大神”程序员到底有什么区别

现在社会上有很多程序员,那您是否可想过程序员为什么会有不同的水平?你又是哪一类的程序员?“菜鸟”程序....

的头像 机器学习算法与人工智能 发表于 05-14 08:48 305次 阅读
“菜鸟”程序员和“大神”程序员到底有什么区别

基于 Python 的深度学习库Keras入门知识

支持 Python 开发环境的平台同时也能支持 Keras。正式构建测试是在 Python V2.7....

的头像 C语言专家集中营 发表于 05-14 04:05 1242次 阅读
基于 Python 的深度学习库Keras入门知识

Deeplearning4j框架中的库,企业大数据应用程序中的深度学习

Python 为数据科学家所广泛采用,而大数据编程人员则在 Hadoop 和 Spark 上使用 J....

的头像 C语言专家集中营 发表于 05-13 11:00 1142次 阅读
Deeplearning4j框架中的库,企业大数据应用程序中的深度学习

一个把爬虫下载器和解析器联合在一起的库

我们只需要用pip 直接install 即可。pip install requests-html ,....

的头像 马哥Linux运维 发表于 05-13 10:56 565次 阅读
一个把爬虫下载器和解析器联合在一起的库

【晒出你的第83行代码】踌躇满志的三位高中生,以敬畏之心踏上了代码征程

发表于 05-09 17:28 120次 阅读
【晒出你的第83行代码】踌躇满志的三位高中生,以敬畏之心踏上了代码征程

【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”

发表于 05-09 16:32 147次 阅读
【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”