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库的安装与卸载详细步骤

安装好python、设置好环境变量后,在python安装目录下Script文件夹内会存在pip.ex....

发表于 10-20 09:09 17次 阅读
Python库的安装与卸载详细步骤

常见的Pythonic写法汇总

Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。要写出 Pyt....

的头像 马哥Linux运维 发表于 10-19 15:03 43次 阅读
常见的Pythonic写法汇总

有没有大神可以指教一下labview2018安装labpython无法运行例程,提示labpython无法初始化

有没有大神可以指教一下labview2018安装labpython无法运行例程,提示labpython无法初始化...

发表于 10-19 12:02 38次 阅读
有没有大神可以指教一下labview2018安装labpython无法运行例程,提示labpython无法初始化

如何使用rs2_project_point_to_pixel()?

我已经知道如何使用rs2_deproject_pixel_to_point(),但我对rs2_project_point_to_pixel()有一些疑问。 rs2_project_point_...

发表于 10-19 11:47 14次 阅读
如何使用rs2_project_point_to_pixel()?

PolySpace—嵌入式软件运行时静态检查工具

概述         PolySpace 是 MathWorks 公司产品,主要用于分析软件运行时错误工具。它包括...

发表于 10-19 11:09 23次 阅读
PolySpace—嵌入式软件运行时静态检查工具

linux mail命令的的使用方法详细资料解分

在这里整理一下Linux中mail命令的使用。mail也是一个常用的命令,我们在很多地方都要用到它,....

发表于 10-18 18:44 19次 阅读
linux mail命令的的使用方法详细资料解分

RobotFramework如何使用?有什么问题及如何解决

Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关....

发表于 10-18 17:25 16次 阅读
RobotFramework如何使用?有什么问题及如何解决

TIOBE发布了10月份最新编程语言排行榜

话虽如此,但我们依然有理由相信,Go 依然是一只优质的“潜力股”,且不说它一直保持上升的趋势,在日益....

的头像 电子发烧友网工程师 发表于 10-18 17:01 653次 阅读
TIOBE发布了10月份最新编程语言排行榜

作为一名开发者,如何让自己比现在厉害10倍?

编程是一种创造性的追求。对于普通人来说,它似乎技术性很强、而且很枯燥,但实际上你是一个艺术创造者。你....

的头像 新智元 发表于 10-18 10:28 161次 阅读
作为一名开发者,如何让自己比现在厉害10倍?

GDAL数据转换库的介绍和安装及快速开始资料免费下载

可能你不玩GIS,不懂这个库到底有什么用,或者和python有什么关系。但是你要玩GIS,RS,你就....

发表于 10-18 10:27 23次 阅读
GDAL数据转换库的介绍和安装及快速开始资料免费下载

基于NumPy创建一个可以工作的神经网络

在开始编程之前,先让我们准备一份基本的路线图。我们的目标是创建一个特定架构(层数、层大小、激活函数)....

的头像 论智 发表于 10-18 09:02 341次 阅读
基于NumPy创建一个可以工作的神经网络

详细解读Python变量类型

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配....

的头像 马哥Linux运维 发表于 10-17 17:14 134次 阅读
详细解读Python变量类型

不是按1.33编译代码,而是1.32

我遇到过这样一个问题。我可以通过我同事的XC 16 1.32传递我的代码,但是我不能超过1.33,错误是从编译器里面出来的。我需要X...

发表于 10-17 16:31 11次 阅读
不是按1.33编译代码,而是1.32

编程连续扫描测量python示例

有一个新的应用笔记,编程Keysight Technologies连续扫描可调谐激光器,作为[]的应用笔记链接。 这概述了这些仪器可用的软件和...

发表于 10-17 11:37 18次 阅读
编程连续扫描测量python示例

Python在实时嵌入式系统中扮演怎样的角色?

早年,虽然Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都....

的头像 嵌入式资讯精选 发表于 10-17 08:53 201次 阅读
Python在实时嵌入式系统中扮演怎样的角色?

谁可以告诉我pyrealsense2控制深度曝光的方法或代码?

比如realsenseviewer,我想用pyrealsense2来控制深度曝光水平。 所以我正在寻找一个解释,但我还没有发现任何相关的东西。 谁可...

发表于 10-16 16:45 32次 阅读
谁可以告诉我pyrealsense2控制深度曝光的方法或代码?

数学推导+纯Python实现机器学习算法

跟上一讲写线性模型一样,在实际动手写之前我们需要理清楚思路。要写一个完整的逻辑回归模型我们需要:s....

的头像 人工智能爱好者社区 发表于 10-16 16:12 267次 阅读
数学推导+纯Python实现机器学习算法

用Python编写模块有何技巧?

Python不是一个封闭的体系,而是一个开放系统。开放系统的最大好处就是避免了“熵增”。

的头像 嵌入式资讯精选 发表于 10-16 15:53 122次 阅读
用Python编写模块有何技巧?

TPYBoardV201温湿度上传教程

    历来关于温湿度的检测都是没有间断过的,这次我们继续检测温湿度,同样还是使用DHT11来检测。但是这次检测到的...

发表于 10-16 14:28 84次 阅读
TPYBoardV201温湿度上传教程

Python入门之Python基础教程资料免费下载

Python 是种易学而强大的编程语言 。 它包含了高效的高级数据结构 , 能够用简单而高效的方式进....

发表于 10-16 08:00 38次 阅读
Python入门之Python基础教程资料免费下载

linux内核入门教材之linux内核设计与实现第二版中文版免费下载

此书是当今首屈一指的linux内核入门最佳图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通....

发表于 10-15 18:20 24次 阅读
linux内核入门教材之linux内核设计与实现第二版中文版免费下载

零经验也可轻松学习《Python编程快速上手-让繁琐工作自动化》

《Python编程快速上手—让繁琐工作自动化》是畅销Python编程图书,帮助你通过编程快速实现工作自动化。在本书中,你将学习利用...

发表于 10-15 16:47 293次 阅读
零经验也可轻松学习《Python编程快速上手-让繁琐工作自动化》

DATALOGIC的CBX100读码器的详细资料合集免费下载

本文档的主要内容详细介绍的是DATALOGIC读码器的详细资料合集免费下载包括了:DLCODE中文简....

发表于 10-15 08:00 19次 阅读
DATALOGIC的CBX100读码器的详细资料合集免费下载

推荐系统中的EE问题及解决问题的基本Bandit算法详细概述

Exploration and Exploitation(EE问题,探索与开发)是计算广告和推荐系统....

的头像 人工智能爱好者社区 发表于 10-14 10:48 256次 阅读
推荐系统中的EE问题及解决问题的基本Bandit算法详细概述

7个Python调试通过的代码详细资料分析

"Python的应用十分广泛,今天我们来分享7个Python实战项目代码,希望你有所收获。

的头像 马哥Linux运维 发表于 10-14 09:46 324次 阅读
7个Python调试通过的代码详细资料分析

S29AL016J代码下载错误

HI团队我使用S29 ALL 016J为我的项目,我有问题下载代码到它,我已经创建了一个闪存ALGO,但每当它给一个闪光灯超时错...

发表于 10-12 15:40 35次 阅读
S29AL016J代码下载错误

关于从pyrealsense2中的'pc.calculate'获取的点云的问题

我使用python包装器中的代码来获取点云: depth = frames.get_depth_frame() color = frames.get_color_frame() 如果不是...

发表于 10-12 11:50 41次 阅读
关于从pyrealsense2中的'pc.calculate'获取的点云的问题

成为Python工程师需要哪些技能

掌握计算机的构成和工作原理

的头像 工程师人生 发表于 10-12 09:54 266次 阅读
成为Python工程师需要哪些技能

8X8点阵屏显示原理是怎样的?及C程序代码资料免费下载

由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,只要行驱动或是列驱动接三极管就可以,不....

发表于 10-10 08:00 48次 阅读
8X8点阵屏显示原理是怎样的?及C程序代码资料免费下载

ug1292时序收敛快速参考手册

这个手册与ug949的理念是一致的即”尽可能地把所有问题放在设计初期解决“。宁可在设计初期花费更多的....

的头像 电子发烧友网工程师 发表于 10-09 10:52 199次 阅读
ug1292时序收敛快速参考手册

浅谈Python语言

python是目前市面上,我个人认为是最简洁&&最优雅&&最有钱途&&最全能的编程语言,没有之一。所....

发表于 10-09 09:45 286次 阅读
浅谈Python语言

jQuery教程之jQuery权威指南实战资料电子教材免费下载

本书由国内资深Web技术专家亲自执笔.4大Web开发社区一致鼎力推荐,权威性毋庸置疑。内容新颖,基于....

发表于 10-09 08:00 27次 阅读
jQuery教程之jQuery权威指南实战资料电子教材免费下载

将Python数据处理速度提升2~6倍的简单方法

让我们举一个简单的例子,我们在一个文件夹中有一个图像数据集; 或者我们甚至有成千上万的图像!为了节省....

的头像 新智元 发表于 10-08 10:56 352次 阅读
将Python数据处理速度提升2~6倍的简单方法

Python的受欢迎程度真的能超越JavaScript吗?

可以发现,有69.8%的受访用户表示支持JavaScript,而稳定使用Python的用户只占38.....

的头像 论智 发表于 10-08 09:02 834次 阅读
Python的受欢迎程度真的能超越JavaScript吗?

怎么有效学习Python数据分析?Python数据分析基础电子教材免费下载

本书展示如何用 Python 程序将不同格式的数据处理和分析任务规模化和自动化。主要内容包括 :Py....

发表于 10-08 08:00 75次 阅读
怎么有效学习Python数据分析?Python数据分析基础电子教材免费下载

飞思卡尔Freescale 9s12单片机资源代码免费下载

本文档的主要内容详细介绍的是飞思卡尔Freescale 9s12单片机资源代码免费下载,对Frees....

发表于 10-08 08:00 29次 阅读
飞思卡尔Freescale 9s12单片机资源代码免费下载

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

无人驾驶虽然入门门槛很高,但是还是可以通过一些简化的模型迅速上手。例如比较有名的DonkeyCar,....

的头像 基于树莓派的自动驾驶 发表于 10-07 17:59 433次 阅读
树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

编程语言Java和Python对比哪个比较好

Python挺适合入门的,看起来很简单,适合创业团队,可以快速开发,快速上线,快速迭代。适合特种部队....

的头像 我快闭嘴 发表于 10-06 15:27 233次 阅读
编程语言Java和Python对比哪个比较好

Python开发的Pipenv能解决什么问题

让我们回到第一个 Python 版本,这时我们有了 Python,但是没有干净的方法来安装软件包。

的头像 我快闭嘴 发表于 10-06 14:27 167次 阅读
Python开发的Pipenv能解决什么问题

Pipenv - 官方推荐的的python包管理工具

它可以为你的项目自动创建和管理虚拟环境,并且在你安装/删除包时自动在Pipfile中添加/移除相应的....

的头像 马哥Linux运维 发表于 10-04 15:02 175次 阅读
Pipenv - 官方推荐的的python包管理工具

用户画像番外篇之随笔三则

激活注册转化率:用户从应用商店下载APP后,不一定都会有注册行为。对于刷下载量、用户为抢红包、赚积分....

的头像 人工智能爱好者社区 发表于 10-04 10:27 227次 阅读
用户画像番外篇之随笔三则

DCS工艺流程图中常见的图形符号及代码识别你了解吗?

每一个项目在投标前都会经设计院设计工艺流程图,然后投标者依据流程图上标识的DCS控制点及设备连接线路....

的头像 工控资料窝 发表于 10-03 18:26 303次 阅读
DCS工艺流程图中常见的图形符号及代码识别你了解吗?

2018年受到众多开发者关注的7个Python类库

几个还不太知名的库引起了Python开发者的关注。

的头像 马哥Linux运维 发表于 10-02 09:30 407次 阅读
2018年受到众多开发者关注的7个Python类库

十个最受欢迎的Python机器学习库盘点

Python已成为机器学习领域最热门的编程语言之一。

的头像 智车科技 发表于 10-02 08:47 1082次 阅读
十个最受欢迎的Python机器学习库盘点

Linux引发争议,贡献者能否删除上传的代码?

多位贡献者和社区成员对 COC 进行批判和反对,甚至有人在邮件列表发起了撤销贡献代码的讨论。

的头像 Linux爱好者 发表于 09-30 14:46 254次 阅读
Linux引发争议,贡献者能否删除上传的代码?

Python变量很难记?常见的解决办法有三种

在PEP 484中,引入了Type Hints,在PEP 526中引入了Variable Annot....

的头像 马哥Linux运维 发表于 09-30 09:10 291次 阅读
Python变量很难记?常见的解决办法有三种

如何使用Python来设计和实现语料分析系统设计?

语料分析系统是利用计算机软件技术实现语料分析与研究的重要手段,利用它可以实现对大量语料的分析、词语1....

发表于 09-29 17:23 71次 阅读
如何使用Python来设计和实现语料分析系统设计?

用Python爬取拉勾网不同编程语言职位信息

这张图告诉我们,在大部分情况下,没(Ren)钱(Chou)就要多读书。不管是经验经验1年以下、经验3....

的头像 人工智能 发表于 09-29 16:51 430次 阅读
用Python爬取拉勾网不同编程语言职位信息

迭代器和生成器的区别

经由内存池登记的内存到最后还是会回收到内存池,并不会调用 C 的 free 释放掉.以便下次使用.对....

的头像 马哥Linux运维 发表于 09-29 15:41 374次 阅读
迭代器和生成器的区别

算法是什么?python的时间,空间复杂度和常用算法实例说明免费下载

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系....

发表于 09-29 08:00 45次 阅读
算法是什么?python的时间,空间复杂度和常用算法实例说明免费下载

Python基础教程之《Python机器学习—预测分析核心算法》免费下载

 在学习和研究机器学习的时候,面临令人眼花缭乱的算法,机器学习新手往往会不知所措。本书从算法和 Py....

发表于 09-29 08:00 57次 阅读
Python基础教程之《Python机器学习—预测分析核心算法》免费下载

关于Python 新手不得不知道

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

发表于 09-28 17:18 193次 阅读
关于Python 新手不得不知道

java教程之Swing用户界面组件的详细资料介绍免费下载

在Java语言中,有两个Swing组件用于得到文本输入:文本域(JTextField)和文本区(JT....

发表于 09-28 17:15 41次 阅读
java教程之Swing用户界面组件的详细资料介绍免费下载

解析媒体矩阵的Python编程函数讲解资料免费下载

每种计算机语言都会遇到这样的应用情况:程序中会出现重复执行的语句。尽管可以用复制/ 粘贴的方式重复代....

发表于 09-28 16:57 48次 阅读
解析媒体矩阵的Python编程函数讲解资料免费下载

R和Python,哪个对数据科学初学者更友好?

我想强调的是,这主要不是少打几个字的问题,而是形成“恰当的”心智模型的问题。许多人抱怨R代码很慢,9....

的头像 论智 发表于 09-28 08:59 226次 阅读
R和Python,哪个对数据科学初学者更友好?

Google的C++代码规范是全球最好的一份C++代码规范

个人感受:这种做法可以从一开始就避免一些bug的出现,或更容易解决一些bug。构造函数+Init()....

的头像 C语言专家集中营 发表于 09-27 17:54 352次 阅读
Google的C++代码规范是全球最好的一份C++代码规范

如何在Linux录制一个终端操作视频详细资料分析

录制一个终端操作可能是一个帮助他人学习 Linux 、展示一系列正确命令行操作的和分享知识的通俗易懂....

发表于 09-27 16:32 39次 阅读
如何在Linux录制一个终端操作视频详细资料分析

protobuf是什么?protobuf有什么作用支持什么数据类型?

protobuf是google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。所以很适合用....

发表于 09-27 16:29 48次 阅读
protobuf是什么?protobuf有什么作用支持什么数据类型?

python的文件夹与文件如何进行操作?

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我....

发表于 09-27 16:04 47次 阅读
python的文件夹与文件如何进行操作?

嵌入式Linux是什么?基础知识,系统环境搭建和综合应用详细讲解

本书从嵌入式Linux 的基础知识、系统环境搭建到综合应用,共分三个层次深入浅出地为读者拨开萦绕于嵌....

发表于 09-27 14:49 54次 阅读
嵌入式Linux是什么?基础知识,系统环境搭建和综合应用详细讲解