Python 爬虫系列之一——每日星座运势

开个新坑——Python 爬虫系列,最近脑子里有很多非常有趣的想法,但实现起来都需要一些简单的爬虫知识,如果放在趣学 Python 系列,会显得文章太长,干脆拿出来开个新坑。这个系列本质上是为趣学 Python 系列提供数据支撑的,我会尽量从最简单的爬虫开始写,保证零基础一样能看懂。

Python 爬虫已经是烂大街的东西了,几乎每个人在学习 Python 后第一个实战项目就是爬虫,入门门槛低,上手简单,容易产生成就感,与此同时,大规模数据爬取的技术含量又保证了深入学习的必要性,简直是学习技术的最佳对象。今天,我们来实现一个最简单的爬虫,用以爬去各个星座的每日运势。

0x00 基本环境

Python 版本:3.7.1

用到的库:lxml、requests

Pytthon 经常会用到不同的库,有时甚至是不同的版本,如果自己配置包管理工具和虚拟环境非常麻烦,哪怕 pipenv 将二者进行了结合用起来也不是很方便,建议安装 Anaconda,省时省心,用法也简单,各个虚拟环境随时切换,极为方便。

0x01 基础知识

首先介绍下几个基本的概念,方便大家对爬虫如何工作有一个简单的了解。

所谓爬虫,其实就是用程序模拟人来登录站,然后提取我们需要的信息。访问网站是通过 HTTP 协议来实现的,其工作模型如下图:

那么我们需要了解的第一个知识点就是如何通过 Python 来发送请求。在我们的爬虫中,访问网页这部分工作使用 requests 库来实现,通过 requests 库模拟发送请求,然后接收网站的响应,也就是传回的 html 数据。

提取指定节点包含的信息一般有两种方式:正则表达式或 XPath,其中正则表达式比较繁琐,XPath 简单易懂,还可以在 Chrome 中直接复制,因此本文选用 XPath 来定位节点。需要注意的是 XPath 定位的一组符合条件的节点,因此返回一个 list ,其中对应的第 0 个元素一般就是我们需要的。

基础知识介绍完了,下面我们开始进入正题。

0x02 分析网页

首先需要对要爬取的网页进行分析。

我们需要爬取的网址为 http://www.xzw.com/fortune/aries/ ,在浏览器中打开网页,然后在相应元素上右键点击检查,我们就可以在分割窗口中看到该元素的信息了,如下图所示:

然后找到相应节点,右键就可以复制 XPath 了。

需要注意的是,XPath 定位的是某个节点,而我们需要用到的是对应节点的文本,因此需要用到 text 方法。

比如,短评这个 label 的 XPath 为:

在代码中我们可以这么使用:

另外需要注意,有时候我们需要用到节点的属性,比如综合运势为 4 星,这个就是通过节点的 style 属性来体现的。

其中 4 星对应的 em 标签宽度为 64px,可以通过 attrib 获得:

这样返回的是字符串 ,然后可以只保留数字就可以了:

0x03 代码实现

1. 导入需要的库

2. 发送请求

3. 将返回的数据格式化为节点树

4. 提取节点数据

完整代码如下:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181217G011IT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券