html5/css教程

javascript教程

asp教程

php教程

jsp教程

C#/.NET教程

Python教程

网络营销

建站经验

点击排行

python爬虫应用:采用requests + Xpath技巧

来源:中文源码网    浏览:488 次    日期:2024-05-06 05:11:59

爬虫目标

本文采用requests + Xpath,爬取豆瓣电影《黑豹》部分短评内容。话不多说,代码先上:

仅仅只需要12行代码!带你走入《黑豹》电影短评

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

仅仅只需要12行代码!带你走入《黑豹》电影短评

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

仅仅只需要12行代码!带你走入《黑豹》电影短评

工具准备

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

  • 安装Python 3及相关模块(requests、lxml、pandas、time、random、tqdm)

    requests:用来简单请求数据

    lxml:比Beautiful Soup更快更强的解析库

    pandas:数据处理神器

    time:设置爬虫访问间隔防止被抓

    random:随机数生成工具,配合time使用

    tqdm:交互好工具,显示程序运行进度

基本步骤

  1. 网络请求分析

  2. 网页内容解析

  3. 数据读取存储

涉及知识点

  • 爬虫协议

  • http请求分析

  • requests请求

  • Xpath语法

  • Python基础语法

  • Pandas数据处理

爬虫协议

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

仅仅只需要12行代码!带你走入《黑豹》电影短评

豆瓣网站的爬虫协议

HTTP请求分析

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

仅仅只需要12行代码!带你走入《黑豹》电影短评

豆瓣短评页面请求分析

通过请求分析,我们找到了目标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),输出获取状态

仅仅只需要12行代码!带你走入《黑豹》电影短评

请求详情分析

(除了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程序

相信接触过Python的小伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行、命令行窗口运行、开发工具上运行等,其中在不同的操作平台上还互不相同。今天,小编讲些Python基础的内容,以Windows下交互式环境为依托,演示Python程序的运行。

一般来说,顺利安装Python之后,有两种方式可以进入Python交互性环境。一种是在Python自带的IDLE中直接打开交互式窗口,如下图所示:

仅仅只需要12行代码!带你走入《黑豹》电影短评

另一种是打开开始菜单,输入cmd之后,进入命令行窗口,之后输入Python,回车之后便可以进入到交互式环境中去,如下图所示:

仅仅只需要12行代码!带你走入《黑豹》电影短评

在>>>提示符后边输入编程语句,然后回车进行执行,就会得到运行的结果。简单来看,这个交互式环境有点类似计算器,一次执行一条语句,而且还可以保存结果。下图是部分操作实例:

仅仅只需要12行代码!带你走入《黑豹》电影短评

需要注意的是特殊变量“_”,它在Python交互式环境中的意思是前面运算的结果,一般在程序中使用其构造成新的表达式,在此基础上做进一步计算。在交互式环境中,我们可以直接使用常量,也可以定义变量,但是必须要事先先定义好变量,不然的就会出现命名错误,如例子中的最后一行代码中的a没有定义,所以报错了,但是length和width都没有报错,因为他有定义。

在Python交互式环境中,如果存在语法错误,程序在运行之后会报错,而且会得到错误信息,可以帮助我们很轻松的找到报错的行数和报错内容,只要我们对症下药就可以药到病除啦,bug分分钟解决掉~~

在交互式环境中,输入的代码不会被保存下来,当关闭Python得到运行窗口之后,之前输入的代码将不会被保存。但是在交互式环境中按下键盘中的上下键,可以寻找历史命令,但是它是短暂性的记忆,当退出程序之后,这些命令将不复存在。

如果你需要编写较长程序的时候,使用命令行就不太方便了。此时你可以利用文本编辑器进行编辑脚本。在IDLE中点击左上方的file,然后选择New window菜单,就可以新建一个窗口了,如下图所示:

仅仅只需要12行代码!带你走入《黑豹》电影短评

在这里,你可以编写你的代码,但是务必要注意缩进,否则会经常出现indentation(缩进)错误,语句的缩进在Python中相当重要,因为不同的缩进反映了语句块的不同层次之间的关系。编写好的文件需要进行保存(Ctrl+s),之后以.py的拓展名进行保存。保存好之后,按下快捷键F5就可以运行程序了,之后在IDLE的窗口中便可以看到运行的结果。当然你也可以右键,然后点击run,就可以运行程序了。

精彩推荐