python运势预测程序_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. 提取节点数据

完整代码如下:

以下是使用Python爬取百度图片并保存的示例代码: ```python # 导入依赖库 import requests import re import os # 设置搜索关键字 keyword = "美食" # 设置图片保存路径 save_path = "./images/" # 构造百度图片搜索的URL url = "https://image.baidu.com/search/index?tn=baiduimage&word={}".format(keyword) # 发送HTTP请求并获取响应 response = requests.get(url) # 使用正则表达式从响应内容中提取图片URL列表 img_urls = re.findall('"objURL":"(.*?)",', response.text, re.S) # 遍历图片URL列表并下载保存图片 for i, img_url in enumerate(img_urls): try: # 发送HTTP请求并获取响应 response = requests.get(img_url, timeout=10) # 设置图片保存路径 img_path = os.path.join(save_path, "{}.jpg".format(i)) # 保存图片 with open(img_path, "wb") as f: f.write(response.content) print("成功下载第{:>3d}张图片!".format(i+1)) except Exception as e: print("下载第{:>3d}张图片失败:{}".format(i+1, e)) ``` 解释一下上述代码的主要步骤: 1. 设置搜索关键字和图片保存路径 2. 构造百度图片搜索的URL 3. 发送HTTP请求并获取响应 4. 使用正则表达式从响应内容中提取图片URL列表 5. 遍历图片URL列表并下载保存图片 需要注意的是,这种方式只是简单的使用正则表达式从响应内容中提取图片URL,而没有使用任何API,因此可能存在一些不稳定性和容易被反爬虫机制封禁的风险。建议在使用时注意合理使用代理、设置请求头等防反爬措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值