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运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

基于Featuretools Python库来实现特征工程自动化的实例

特征构造是一个非常耗时的过程,因为每个新特征都需要经过几个步骤去构造,特别是那些需要用到多张表信息的....

的头像 电子发烧友网工程师 发表于 08-20 09:16 210次 阅读
基于Featuretools Python库来实现特征工程自动化的实例

Python爬虫8个常用的爬虫技巧分析总结

用python也差不多一年多了,python应用最多的场景还是web快速开发、爬虫、自动化运维:写过....

的头像 马哥Linux运维 发表于 08-18 11:45 238次 阅读
Python爬虫8个常用的爬虫技巧分析总结

Python判断文件/目录存在的方法

使用os模块判断文件

的头像 马哥Linux运维 发表于 08-18 11:18 164次 阅读
Python判断文件/目录存在的方法

简单选择排序算法的流程,代码,性能等详细资料概述

简单选择排序是一种选择排序。 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的....

的头像 算法与数据结构 发表于 08-18 10:47 131次 阅读
简单选择排序算法的流程,代码,性能等详细资料概述

micropython的详细中文教程资料免费下载

MicroPython在2014成功的在kickstarter上众筹,获得很高的评价,现在越来越多的....

发表于 08-17 18:01 49次 阅读
micropython的详细中文教程资料免费下载

IT行业中,是该注重技术还是市场销售?

从事IT行业5年以来,我经常看到不少人持有这样一个观点:“技术不重要,关键是业务。”曾经有一段时间,....

的头像 工程师人生 发表于 08-17 10:18 251次 阅读
IT行业中,是该注重技术还是市场销售?

Python是机器学习的主流语言,你真的掌握了Python吗?

给定一个包含多个元素的list,让你查找其中出现次数最多的元素,你会怎么做?在下图中,我们介绍了两种....

的头像 论智 发表于 08-17 09:21 119次 阅读
Python是机器学习的主流语言,你真的掌握了Python吗?

Python是机器学习的主流语言,你真的掌握了Python吗?

给定一个包含多个元素的list,让你查找其中出现次数最多的元素,你会怎么做?在下图中,我们介绍了两种....

的头像 论智 发表于 08-17 09:21 208次 阅读
Python是机器学习的主流语言,你真的掌握了Python吗?

TIOBE 8月编程语言指数排行榜公布:Python超越C++不是梦

TIOBE 8 月编程语言指数排行榜已经公布了。TIOBE 刚刚发布了 8 月编程语言排行榜,排名前....

的头像 算法与数据结构 发表于 08-15 17:13 273次 阅读
TIOBE 8月编程语言指数排行榜公布:Python超越C++不是梦

2018年最热门的编程语言,Python在整体排名中位居榜首

Ganssle的想法也可能是错的。虽然IEEE的调查并未另外分出Windows app,但它区分出行....

的头像 面包板社区 发表于 08-15 17:04 513次 阅读
2018年最热门的编程语言,Python在整体排名中位居榜首

通过C代码和Intel手册详细理解cache参数

查看intel 手册可以得到每个字节的解释,ebx寄存器中低八位查表得到如图3所示相关信息,3级ca....

的头像 ssdfans 发表于 08-15 14:25 107次 阅读
通过C代码和Intel手册详细理解cache参数

STM32F407开发板移植MicroPython

MicroPython准备工作:1.     下载rt_thread源码:见附件链接2.     下载ENV工具...

发表于 08-15 14:02 237次 阅读
STM32F407开发板移植MicroPython

如何简单跨过程序员的“技术门槛”?

python的语法简洁清晰,语法接近英语,python简单的语法可以让初学者专注于思考要做的事情,而....

的头像 电子发烧友网工程师 发表于 08-15 08:54 314次 阅读
如何简单跨过程序员的“技术门槛”?

Python神奇方法系统的梳理

当你定义的类中一个实例调用了unicode(),用于给它定义行为。unicode()像是str(),....

的头像 新智元 发表于 08-15 08:18 564次 阅读
Python神奇方法系统的梳理

网络攻击扩大恐怖主义影响,更“方便”国家较量

2018年1月4号,卡耐基国际和平基金会发表了一份报告,报告将伊朗描述为“第三级网络威胁”。

的头像 E安全 发表于 08-14 10:33 376次 阅读
网络攻击扩大恐怖主义影响,更“方便”国家较量

机器学习能通过类似「指纹辨识」的方式识别出代码的编写者

这方法可以用来辨识黑客和意图瓢窃资料的人,但也有可能对隐私造成威胁。 虽然每位程序员都拥有自己独特的风格,但光通过观察...

发表于 08-14 09:48 155次 阅读
机器学习能通过类似「指纹辨识」的方式识别出代码的编写者

OpenCV3计算机视觉 Python语言实现(原书第2版)中文电子教材免费下载

计算机视觉是一门用计算机模拟生物视觉的学科,更具体地讲,就是让计算机代替人眼实现对目标的识别、分类、....

发表于 08-13 16:48 85次 阅读
OpenCV3计算机视觉 Python语言实现(原书第2版)中文电子教材免费下载

如何使用Python编写能够从原始文本提取信息的程序

自然语言处理(Natural Language Processing,NLP)是人工智能的子领域之一....

的头像 电子发烧友网工程师 发表于 08-13 10:02 589次 阅读
如何使用Python编写能够从原始文本提取信息的程序

程序中内存应该如何分配?怎样进行动态内存分配?

程序在内存中是分段存储的。 代码段:存放语句转换的数字;程序运行时不可修改; 全局段:用来记录全局变....

的头像 嵌入式ARM 发表于 08-12 10:52 278次 阅读
程序中内存应该如何分配?怎样进行动态内存分配?

IEEE发布编程语言排行榜,AI时代Python强势领跑

蔚来资本管理合伙人朱岩说,尽管如此,蔚来资本仍然会非常谨慎地投资电动汽车初创企业。他称,这家总部位于....

的头像 电子发烧友网工程师 发表于 08-11 10:37 1965次 阅读
IEEE发布编程语言排行榜,AI时代Python强势领跑

成为年薪30W程序员必要条件

总有传说中年薪几百万的程序员,但现实中大部分程序员的薪资,其实都说高不高说低不低,做技术也会有自己的....

的头像 电子发烧友网工程师 发表于 08-11 08:20 626次 阅读
成为年薪30W程序员必要条件

Python之父讲述退位原因,以及 Python 的未来将何去何从

an Rossum:我认为不至于。Python 社区非常健康,Python 核心团队非常强大且充满活....

的头像 马哥Linux运维 发表于 08-10 18:02 1198次 阅读
Python之父讲述退位原因,以及 Python 的未来将何去何从

Python人工智能教程让你从入门到践

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

发表于 08-10 17:41 113次 阅读
Python人工智能教程让你从入门到践

机器学习模型也能分得清菜系吗?

吃饭的时候会见到很多奇怪的菜名,很多店常常会取一些奇怪的名字来吸引眼球,吃饭的时候基本靠猜,或者……....

的头像 算法与数据结构 发表于 08-10 15:26 322次 阅读
机器学习模型也能分得清菜系吗?

计算机是如何理解人类语言的?

在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字....

的头像 人工智能头条 发表于 08-10 15:18 419次 阅读
计算机是如何理解人类语言的?

如何实现用Python开发FPGA?

近日,想必各位科技爱好者的朋友圈都被一篇发表在第25届IEEE国际讨论会上,用Python开发FPG....

的头像 FPGA开发圈 发表于 08-10 14:57 293次 阅读
如何实现用Python开发FPGA?

何时何种情况下使用Raspberry Pi?

在让大众自由掌控 PC 强大功能的革命中,Raspberry Pi 是核心,为我们提供了一个具有广泛....

的头像 电子设计 发表于 08-09 09:45 735次 阅读
何时何种情况下使用Raspberry Pi?

如何使用单片机设计数字密码锁(掉电时可记忆密码)的资料免费下载

大家好,我今年暑假初学单片机,还是一名小白,最近看了郭天祥老师写的一个密码锁项目,觉得很有趣,但觉得....

发表于 08-09 08:00 66次 阅读
如何使用单片机设计数字密码锁(掉电时可记忆密码)的资料免费下载

新手要学习编程语言,我必推荐Python

Python软件实现和FPGA性能潜力的结合是一个非常有意义的工作,将会开创出一个类似于树莓派和Ar....

的头像 传感器技术 发表于 08-08 18:30 562次 阅读
新手要学习编程语言,我必推荐Python

Python简直就是万能的,你用Python都做过哪些事?

在2017年“中国互联网企业100 强”的数据中显示,大数据、游戏以及人工智能等相关企业占比近80%....

的头像 论智 发表于 08-08 09:24 1179次 阅读
Python简直就是万能的,你用Python都做过哪些事?

收音机资料及代码和应用程序详细资料免费下载

本文档的主要内容详细介绍的是收音机资料及代码和应用程序详细资料免费下载。

发表于 08-07 08:00 32次 阅读
收音机资料及代码和应用程序详细资料免费下载

Python2D绘图库Matplotlib会用吗?

Matplotlib是一个Python语言的2D绘图库,它支持各种平台,并且功能强大,能够轻易绘制出....

的头像 马哥Linux运维 发表于 08-06 09:09 661次 阅读
Python2D绘图库Matplotlib会用吗?

基于Matlab/RTW实现实时仿真与嵌入式系统开发设计

在日益激烈的竞争中,系统的开发周期显得尤为重要,但开发时间与系统安全性、可靠性又有一定冲突,如果仍....

发表于 08-06 08:43 82次 阅读
基于Matlab/RTW实现实时仿真与嵌入式系统开发设计

代码之美汉译版

正则表达式是描述文本模式的表示法,它可以有效地构造一种用于模式匹配的专用语言。

发表于 08-06 08:00 20次 阅读
代码之美汉译版

打造一款机器学习产品、或进行有关机器学习的学术研究所需要的数学背景

在没有首先自己推导出梯度的情况下,这行代码的意义可能没有那么显而易见。在我们的代码中,对于满足条件的....

的头像 新智元 发表于 08-05 10:29 376次 阅读
打造一款机器学习产品、或进行有关机器学习的学术研究所需要的数学背景

2018年十大编程语言是什么呢?

其次,在排行前十的编程语言排行榜中,R语言的排名逐年小幅下滑,反面衬托了Python 越来越受欢迎。....

的头像 IEEE电气电子工程师学会 发表于 08-05 08:19 525次 阅读
2018年十大编程语言是什么呢?

如何自学人工智能?机器学习详细路径规划

综述,机器学习的自学简单来说分为三个步骤 前期:知识储备包括数学知识,机器学习经典算法知识,编程技....

的头像 Imagination Tech 发表于 08-04 11:36 699次 阅读
如何自学人工智能?机器学习详细路径规划

如何判断大小端?大小端如何使用代码实现?

无论笔试还是面试都有一定几率问怎么判断大小端,那么你就很自豪的回答,大端就是数据高字节放在低地址上,....

的头像 嵌入式ARM 发表于 08-04 10:41 287次 阅读
如何判断大小端?大小端如何使用代码实现?

什么是基于签名的防火墙?如何判断目标环境是否部署防火墙?

当我们对一个系统进行渗透时,如果你忽略了防火墙的存在,那么就会为我们的测试带来诸多的麻烦。因此在开始....

的头像 马哥Linux运维 发表于 08-02 17:13 323次 阅读
什么是基于签名的防火墙?如何判断目标环境是否部署防火墙?

IEEE发布顶级编程语言排行榜:Python雄踞榜首

IEEE Spectrum发布了最新的第五届年度编程语言交互排行榜!Python不但雄踞第一,在综合....

的头像 新智元 发表于 08-02 09:32 709次 阅读
IEEE发布顶级编程语言排行榜:Python雄踞榜首

机器学习实战中文电子教材免费下载

本书没有从理论角度来揭示机器学习算法背后的数学原理,而是通过“原理简述+问题实例+ 实际代码+运行效....

发表于 08-01 18:02 68次 阅读
机器学习实战中文电子教材免费下载

Python计算机视觉编程中文版电子教材免费下载

本书是计算机视觉编程的权威实践指南,依赖Python 语言讲解了基础理论与算法,并通过大量示例细致分....

发表于 08-01 17:02 95次 阅读
Python计算机视觉编程中文版电子教材免费下载

使用Python和OpenCV在道路上找到车道线

虽然我们的图像目前是RBG格式,但是我们应该探索在不同的颜色空间,如HSL或HSV中进行可视化,看看....

的头像 智车科技 发表于 08-01 10:54 423次 阅读
使用Python和OpenCV在道路上找到车道线

关于Linux下做FFT运算的一疑惑

在网上找了一个成熟的FFT运算代码,加入工程中编译,结果发现计算的幅度值永远只有实际幅度值的1/4,....

的头像 电子发烧友网 发表于 08-01 10:01 296次 阅读
关于Linux下做FFT运算的一疑惑

在工程师的手中,我们可以用机器学习搭建自己的音乐梦想!

万万没想到,在工程师的手中,我们可以用机器学习搭建自己的音以决策树为例,这是一种常见的机器学习算法,....

的头像 电子发烧友网工程师 发表于 08-01 09:41 368次 阅读
在工程师的手中,我们可以用机器学习搭建自己的音乐梦想!

如何使用Keras建立一个 Wide & Deep网络来预测其描述中的葡萄酒价格

我最近一直在使用 Sequential Model API 构建了许多 Keras 模型(这里有一些....

的头像 TensorFlow 发表于 07-31 15:29 297次 阅读
如何使用Keras建立一个 Wide & Deep网络来预测其描述中的葡萄酒价格

请问优化后代码调试不方便怎么办?

各位专家好!     请问在调试过程中,开启优化后得代码,调试很不方便,比如断点加不上,但是不优化执行速度跟不上,...

发表于 07-31 10:02 103次 阅读
请问优化后代码调试不方便怎么办?

Softmax如何把CNN的输出转变成概率?交叉熵如何为优化过程提供度量?

这篇小文将告诉你:Softmax是如何把CNN的输出转变成概率,以及交叉熵是如何为优化过程提供度量,....

的头像 人工智能头条 发表于 07-29 11:21 495次 阅读
Softmax如何把CNN的输出转变成概率?交叉熵如何为优化过程提供度量?

TensorFlow是什么?如何启动并运行TensorFlow?

TensorFlow 是一款用于数值计算的强大的开源软件库,特别适用于大规模机器学习的微调。 它的基....

的头像 人工智能爱好者社区 发表于 07-29 11:16 527次 阅读
TensorFlow是什么?如何启动并运行TensorFlow?

如何从HTML或XML文件中提取数据的Python爬虫库Beautiful Soup概述

Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库,简单来说,它....

的头像 马哥Linux运维 发表于 07-29 09:56 620次 阅读
如何从HTML或XML文件中提取数据的Python爬虫库Beautiful Soup概述

Python自动化测试框架有哪些?

令开发者万分高兴的是,开发自己的测试框架的日子终于结束了。以前,开发团队接手一个项目并开始开发时,除....

的头像 马哥Linux运维 发表于 07-28 09:06 429次 阅读
Python自动化测试框架有哪些?

Pandas有哪几种数据类型?

在我看来,对于Numpy以及Matplotlib,Pandas可以帮助创建一个非常牢固的用于数据挖掘....

的头像 马哥Linux运维 发表于 07-28 08:42 466次 阅读
Pandas有哪几种数据类型?

Oracle发布季度补丁更新 修复远程代码执行漏洞

2018年7月18日,美国甲骨文(Oracle)公司官方发布了季度补丁更新,其中修复了一个 Orac....

的头像 E安全 发表于 07-27 15:45 276次 阅读
Oracle发布季度补丁更新 修复远程代码执行漏洞

快速学习Python的技巧

用Python完成项目,编写的代码量更少,代码简短可读性强,团队协作开发时读别人的代码速度会非常快,使工作变得更加高效。优雅做...

发表于 07-27 14:58 781次 阅读
快速学习Python的技巧

记录下为自己的板子编译MicroPython的过程

1、搭建环境 下载msys2,安装完更新下。具体操作可以百度。记住安装位置,我是直接安装到D盘根目录。 下载gcc-arm-none-eabi,...

发表于 07-25 12:26 538次 阅读
记录下为自己的板子编译MicroPython的过程

零基础python学习之Django框架设计思想

谈到在web应用领域,除了Python的语法,Django是Python后台一个最重要的框架,那么,什么是软件框架呢?举个简单的例子,对于...

发表于 07-20 14:39 153次 阅读
零基础python学习之Django框架设计思想

如何实现openmv和STM32之间的UART通讯?

我已经尝试过,用OPENMV直接发送一给串口助手,串口助手可以接受到,用STM32自己的TX给RX写信息,改变某一引脚的电...

发表于 07-19 19:36 417次 阅读
如何实现openmv和STM32之间的UART通讯?

快速掌握Python的递归函数与匿名函数调用

      函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常...

发表于 07-19 16:22 157次 阅读
快速掌握Python的递归函数与匿名函数调用

基于单片机的温度监测系统程序代码下载

[table] [tr][td]    基于单片机lcd1602、ds18b20温度监测系统程序 [/td][/tr] [/table]  &n...

发表于 07-19 01:43 56次 阅读
基于单片机的温度监测系统程序代码下载

【NanoPi K1 Plus试用体验】搭建深度学习框架

近几年各种深度学习框架涌现,大家可能很难从众多的深度学习框架中选择一个合适的框架进行学习。对于深度学习的初学者,或者觉得...

发表于 07-17 11:40 267次 阅读
【NanoPi K1 Plus试用体验】搭建深度学习框架