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 爬虫系列之一——每日星座运势相关推荐
- python在线翻译小程序_Python爬虫学习之翻译小程序
本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书<零基础入门学习Python>完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上 ...
- python壁纸数据抓取_python爬虫系列之 xpath实战:批量下载壁纸
一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照 ...
- cron定时器_爬虫_获取每日星座运势
applicationContext_service.xml <?xmlversion="1.0"encoding="UTF-8"?><be ...
- python运势预测程序_基于Python的星座运势接口调用代码实例
[python]代码库#!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import urlencod ...
- python 全栈开发,Day136(爬虫系列之第3章-Selenium模块)
python 全栈开发,Day136(爬虫系列之第3章-Selenium模块) 一.Selenium 简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直 ...
- Python编写每日星座运势获取算法
Python编写每日星座运势获取算法 获取每日星座运势是许多人关注的一个话题.本文将介绍如何使用Python编写一个获取每日星座运势的程序,并附上完整的源代码. 首先,我们需要导入一些必要的库,包括r ...
- python 全栈开发,Day137(爬虫系列之第4章-scrapy框架)
python 全栈开发,Day137(爬虫系列之第4章-scrapy框架) 一.scrapy框架简介 1. 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所 ...
- Python:实现获取daily horoscope每日星座运势算法(附完整源码)
Python:实现获取daily horoscope每日星座运势算法 import requests from bs4 import BeautifulSoupdef horoscope(zodiac ...
- python运势预测程序_星座运势查询示例代码
#!/usr/bin/python # encoding:utf-8 import urllib2, json, urllib # 2.星座运势查询 data = {} data["appk ...
最新文章
- linux vscode配置spring boot开发环境
- Vue watch如何同时监听多个属性?
- 如何高效学习前端新知识,拓展视野,我推荐
- nssl1522-简单数数题【dp】
- 【转】二维异形件排版算法介绍(二)
- layer.open组件获取弹出层页面变量、函数
- leveldb - log格式
- dll反编译(dll反编译工具)
- java盖章后原来印章模糊了_公章部分字迹盖不清楚怎么处理
- Keras-YOLOV3-tensorflow制作训练自己的数据集
- 【39】给定一个无重的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复
- pc banner图 自适应 图片不变型
- Fresher的烦恼(练习打字)
- 删除主键索引 oracle,删除主键无法删除对应索引问题 drop constraint
- Qt5 QML TreeView currentIndex当前选中项的一些问题
- uoj#311 【UNR #2】积劳成疾
- 亡羊补牢为时未晚,网络安全从现在做起
- JSTree的基本用法
- python barrier_[Python 多线程] Barrier (十一)
- 例题5.5 圆桌骑士 LA3523