Python高级应用程序设计任务
Python高级应用程序设计任务要求
用Python实现一个面向主题的网络爬虫程序,并完成以下内容:
(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台)
2.Htmls页面解析
通过F12,对页面进行检查,查看我们所需要爬取内容的相关代码

3.节点(标签)查找方法与遍历方法
(必要时画出节点树结构)
 查找方法:find
三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
2.对数据进行清洗和处理






3.文本分析(可选):jieba分词、wordcloud可视化
4.数据分析与可视化
(例如:数据柱形图、直方图、散点图、盒图、分布图、数据回归分析等)


 5.数据持久化

# 导入相关模块
import requests
from bs4 import BeautifulSoup
import pandas as pd def getHtml(url):
# 判断爬取 是否出错
try:
# 使用get方式爬取页面,添加头部伪装浏览器
r = requests.get(url, headers={'user-agent': 'Mozilla/5.0'}) r.raise_for_status()
# 设置编码格式
r.encoding = r.apparent_encoding
# 返回源码
return r.text
except:
return "页面爬取Error" def HotelList(text,hotellist): soup = BeautifulSoup(text, "html.parser")
# 爬取酒店列表
hotel_list = soup.select("div#hotel_list>div")
# 循环
for hotel in hotel_list:
# 将可能出现错误的地方进行跳过
try:
# 酒店名称
hotel_name = hotel.select("h2")[0].text
# 酒店链接
href = hotel.select("h2>a")[0].attrs["href"]
# 服务贫家
recommend = hotel.select("span.recommend")[0].text
p = hotel.select("p.hotel_item_htladdress")
# 酒店地址
dizhi = p[0].text
# 最新预定时间
newtime = hotel.select("p.hotel_item_last_book")[0].text
# 评分
hotel_score = hotel.find_all("span", "hotel_value")[0].text
# 点评人数
people_number = hotel.select("span.hotel_judgement>span")[0].text
# 酒店评分
level = hotel.find_all("span", "hotel_level")[0].text
# 质量保证
ico_quality_gold = hotel.select("span.ico_quality_gold")[0].text
# 所属地区
diqu = p[0].find_all(
"a", attrs={"tracekey": "nhtllistroomclick"})[0].text
# price = hotel.find_all("span", "J_price_lowList ")[0].text hotellist.append([hotel_name, href, recommend, dizhi, newtime,
hotel_score, people_number, level, ico_quality_gold, diqu])
print([hotel_name, href, recommend, dizhi, newtime,
hotel_score, people_number, level, ico_quality_gold, diqu]) except:
"一个数据爬取出错"
hotellist.append([hotel_name, href, recommend, dizhi, newtime,
hotel_score, people_number, level, ico_quality_gold, diqu]) def savedata(hotellist): wri = pd.ExcelWriter("HotelList.xlsx") col = ["hotel_name", "href", "recommend", "dizhi", "newtime",
"hotel_score", "people_number", "level", "ico_quality_gold", "diqu"] pf = pd.DataFrame(hotellist,columns=col)
# 写入excel
pf.to_excel(wri) wri.save() def main():
# 存放数据的数组
hotellist = []
text = getHtml(
"https://hotels.ctrip.com/hotel/quanzhou406#ctm_ref=hod_hp_sb_lst") HotelList(text, hotellist)
#打印结果信息
print(hotellist)
# 数据保存
savedata(hotellist)

1.经过对主题数据的分析与可视化,可以得到哪些结论?
2.对本次程序设计任务完成的情况做一个简单的小结。
Python高级应用程序设计任务的更多相关文章
- Python高级应用程序设计任务要求
		
Python高级应用程序设计任务要求 用Python实现一个面向主题的网络爬虫程序,并完成以下内容:(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台) 一.主题式网络爬虫设计方案( ...
 - Python高级应用程序设计任务期末作业
		
Python高级应用程序设计任务要求 用Python实现一个面向主题的网络爬虫程序,并完成以下内容:(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台) 一.主题式网络爬虫设计方案( ...
 - python 高级之面向对象初级
		
python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...
 - python高级之函数
		
python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...
 - python高级之装饰器
		
python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函数的定义: 满足下面两个条件之 ...
 - python高级之生成器&迭代器
		
python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...
 - python高级之面向对象高级
		
python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...
 - python高级之网络编程
		
python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...
 - python高级之多线程
		
python高级之多线程 本节内容 线程与进程定义及区别 python全局解释器锁 线程的定义及使用 互斥锁 线程死锁和递归锁 条件变量同步(Condition) 同步条件(Event) 信号量 队列 ...
 
随机推荐
- 官方宣布IPV4已然耗尽,IPv6D风口或将到来?
			
急救箱 IPV4真的用完了吗?  IPV4真的用完了吗?其实 小兰 一点也不惊讶 ,毕竟全球人口这么多,多N的几次幂就用完了吧- 43亿个IPv4地址已分配完毕,这意味着没已经有更多的IPv4地址可 ...
 - 线程池ThreadPoolExecutor的使用方法
			
方法我们通过继承Thread类和实现runnable接口或者callable接口三种方式实现. 继承Thread类实际上也是实现了runnable接口,被继承的类主要是实现run()方法,通过star ...
 - SSH 免密登录服务器
			
本文详解如何以多种方法实现ssh免密码登陆远程服务器 阅读须知: 1.以下方法操作时请不要随意切换目录. 2.xxx为私钥,xxx.pub是公钥(默认一般文件名为id_rsa和id_rsa.pub,可 ...
 - 【2018寒假集训 Day2】【动态规划】挖地雷
			
挖地雷(Mine) 在一个地图上有N 个地窖(N<=200),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径,并规定路径都是单向的,且从编号小的地窖通向编号大的地窖.某人可以从任一处 ...
 - 从零开始入门 K8s | 深入剖析 Linux 容器
			
作者 | 唐华敏(华敏) 阿里云容器平台技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 15 讲. 关注"阿里巴巴云原生"公众号,回复关键词 ...
 - Spire.Cloud.Word 添加Word水印(文本水印、图片水印)
			
概述 Spire.Cloud.Word提供了watermarksApi接口可用于添加水印,包括添加文本水印(SetTextWatermark).图片水印(SetImageWatermark),本文将对 ...
 - 【Android - 问题解决】之ScrollView嵌套ListView时总是自动滑动到ListView顶部的问题
			
最近做了一个项目,里面有一个ScrollView嵌套ListView的布局. 做出来之后发现,进入这个界面之后,总是自动滑动到ListView的顶部,而ScrollView中位于ListView上面的 ...
 - 【开发工具 - Android Studio】之AndroidStudio使用笔记
			
一.关闭自动更新: 问题:刚刚安装Android Studio的童鞋可能会遇到这样一个问题:Android Studio在打开的时候一直在下载一些东西,浪费很多时间,而且最终大多都会显示下载失败等等, ...
 - 利用scatter()绘制颜色映射的二次方曲线
			
程序如下: import matplotlib.pyplot as plt x_value = list(range(1, 1001)) y_value = [x**2 for x in x_valu ...
 - EF分页查询
			
/// <summary> /// 分页查询 + 条件查询 + 排序 /// </summary> /// <typeparam name="Tkey" ...