目录
- 粉丝福利送书:《Hadoop+spark+Python大数据处理从算法到实战》
- 点赞 收藏 ⭐留言 即可参与抽奖送书
- 下周三(10月7日)晚上20:00将会在【点赞区和评论区】抽一位粉丝送这本书~
- 详情请看第四点的介绍嗷~✨
- 1. ①
- 1.1 题目
- 1.2 思路
- 1.2.1 发送请求
- 1.2.2 解析网页
- 1.2.3 获取结点
- 1.2.4 数据输出
- 2. ②
- 2.1 题目
- 2.2 思路
- 2.2.1 发送请求
- 2.2.2 解析网页
- 2.2.3 获取结点
- 2.2.4 数据输出
- 3. ③
- 3.1 题目
- 3.2 思路
- 3.2.1 发送请求
- 3.2.2 解析网页
- 3.2.3 获取结点
- 3.2.4 数据输出
- 4. 福利送书
1.2 思路 1.2.1 发送请求用urllib和re库方法定向爬取给定网址的数据
- 引入库并且编写请求头
请求头是为了把爬虫包装成浏览器的正常访问。
import urllib.request import re header = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36', }
- urllib和requests不同
urllib构造请求头和发送请求是分开的,而requests是封装在一起的。
url = "https://www.shanghairanking.cn/rankings/bcsr/2020/0812" request = urllib.request.Request(url, headers=header) # 构造请求头 r = urllib.request.urlopen(request) # 发送请求1.2.2 解析网页
- decode() 是为了解码成中文
- replace(’n’,’’) 是为了把回车去掉,方便后续的正则匹配。
html = r.read().decode().replace('n','')1.2.3 获取结点
- 分析网页
我们很容易找到结点信息,然后观察节点信息的结构。
- 使用正则表达式获取总体的节点信息
ranking = re.findall("(.*?) ",html)
- 构造字典来存储数据
uList =[] for k in ranking: u = { "rank":"", "percent":"", "name":"", "socre":"", } name = re.findall("img alt=(.*?) onerror",k) # 匹配出名字 ranking = re.findall(" (d+) ",k) # 匹配出排名 socre = re.findall("(.*?) ",k) # 匹配出分数 u["rank"]=ranking[0] u["percent"]=socre[0] u["name"]=eval(name[0]) u["socre"]=socre[1] uList.append(u) 1.2.4 数据输出 print("2020排名t全部层次t学校类型tt总分") for u in uList: print("{}tt{}tt{}tt{}tt".format(u["rank"],u["percent"],u["name"],u["socre"]))2. ② 2.1 题目2.2 思路 2.2.1 发送请求用requests和Beautiful Soup库方法设计爬取网址的AQI实时报
- 导入库
import requests from bs4 import BeautifulSoup
- 构造请求头
headers = { 'Connection': 'keep-alive', 'sec-ch-ua': '"Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,**;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Language': 'zh-CN,zh;q=0.9', } url = 'http://news.fzu.edu.cn/'
- 发送请求
urllib:
request = urllib.request.Request(url, headers=headers) r = urllib.request.urlopen(request)requests:
response = requests.get(url, headers=headers, verify=False)3.2.2 解析网页urllib:
html = r.read().decode().replace('n','')requests:
html = response.content().replace('n','')3.2.3 获取结点
- 注意一点img和src之间也可能会有匹配的,所以不能直接使用这种形式的正则。
- 正则匹配出所有的图片信息
imgList = re.findall(r', html, re.S)3.2.4 数据输出
- 创建一个文件夹image进行保存
for i, img in enumerate(imgList): img_url = "http://news.fzu.edu.cn" + img print(f"正在保存第{i + 1}张图片 路径:{img_url}") resp = requests.get(img_url) with open(f'./image/{img.split("/")[-1]}', 'wb') as f: f.write(resp.content)4. 福利送书点赞,评论这篇博文即可参与送书。
【参考文案】
学习人工智能,为什么要从基础的算法开始入门?学习大数据分析,为什么最后却讲解起了云计算?在“大数据”“云计算”“人工智能”被频繁提起的今天,你是否知道这三个名词间有什么关系?
如果你也有类似疑问,那一定要好好看看北京大学出版社倾力打造的新书——《Hadoop+spark+Python大数据处理从算法到实战》!本书围绕大数据处理的三大核心要素(算力+数据+算法),剖析大数据处理全过程,没有高冷的代码,也没有繁杂的公式,用“简单的方法”搞定大数据,带你用愉快的心情玩转AI!
【内容简介】
本书围绕新基建的云计算、大数据及人工智能进行介绍,分为以下五个部分。
第一部分,介绍大数据的概念与特点,以及典型的产业应用场景;
第二部分,介绍目前云计算中的一个重要的研究与应用领域——容器云,包含应用容器引擎Docker与容器编排工具Kubernetes;
第三部分,是大数据分析的基础,也是大数据分析技术的重点,包含Hadoop、Hbase、Hive、Spark的环境搭建及开发流程;
第四部分,是机器学习相关算法的应用,包含scikit-learn、SparkML、TensorFlow工具的使用;
第五部分,以实例介绍如何使用Spark机器学习库中的协同过滤算法,来实现一个基于Web的推荐系,以及介绍如何使用OpenCV与TensorFlow构建卷积神经网络来实现基于Web的人脸识别。本书轻理论,重实践,适合有一定编程基础,且对云计算、大数据、机器学习、人工智能感兴趣,希望投身到新基建这一伟大事业的读者学习。同时,本书还可作为广大院校相关专业的教材和培训参考用书。
Python相关栏目本月热门文章
- 1【Linux驱动开发】设备树详解(二)设备树语法详解
- 2别跟客户扯细节
- 3Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区
- 4【Java】对象处理流(ObjectOutputStream和ObjectInputStream)
- 5【分页】常见两种SpringBoot项目中分页技巧
- 6一文带你搞懂OAuth2.0
- 7我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
- 8【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成
- 9JavaSE - 封装、static成员和内部类
- 10树莓派mjpg-streamer实现监控及拍照功能调试
- 11用c++写一个蓝屏代码
- 12从JDK8源码中看ArrayList和LinkedList的区别
- 13idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目
- 14在openwrt使用C语言增加ubus接口(包含C uci操作)
- 15Spring 解决循环依赖
- 16SpringMVC——基于MVC架构的Spring框架
- 17Andy‘s First Dictionary C++ STL set应用
- 18动态内存管理
- 19我的创作纪念日
- 20Docker自定义镜像-Dockerfile