Python高级应用程序设计任务要求

用Python实现一个面向主题的网络爬虫程序,并完成以下内容:
(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台)

一、主题式网络爬虫设计方案(15分)
1.主题式网络爬虫名称
 
名称:爬取携程网站泉州地区酒店信息
2.主题式网络爬虫爬取的内容与数据特征分析
 
本次爬虫主要爬取携程网站泉州地区酒店名称与地址和酒店评分
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
 
实现思路:本次设计方案主要使用request库爬取网页信息和beautifulSoup库来提取泉州地区酒店信息
技术难点:主要包括对携程网站泉州地区酒店部分的页面进行分析采集
 
二、主题页面的结构特征分析(15分)
1.主题页面的结构特征


2.Htmls页面解析

通过F12,对页面进行检查,查看我们所需要爬取内容的相关代码


3.节点(标签)查找方法与遍历方法
(必要时画出节点树结构)
 查找方法:find

遍历方法:for循环

三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
1.数据爬取与采集


2.对数据进行清洗和处理

 

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


 5.数据持久化

 6.附完整程序代码
# 导入相关模块
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)

四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?
通过对泉州地区酒店的爬取,可以知道每个酒店的具体名称和地址还有酒店评分,由此可知泉州华侨大厦和希岸酒店,泉州钱隆酒店的评分最高;泉州泉兴精品酒店评分最低。
泉州酒店点评人数最多,泉州钱隆酒店点评人数最少。
2.对本次程序设计任务完成的情况做一个简单的小结。
我觉得这次爬虫的内容还挺有意思的,也让我学到了很多书本以外的知识,一步一步自己探索出来,遇到不懂的问题及时问同学答疑解惑。这一次任务按照老师的要求一步一步来实现,虽然有一些没有完全实现出来,还存在在很多问题,但是发现问题多了也就能及时查缺补漏,让我们对Python这门语言有了更深的理解,也让我增加了更多的兴趣对于这个课程,能够让自己能更好地进步。

Python高级应用程序设计任务的更多相关文章

  1. Python高级应用程序设计任务要求

    Python高级应用程序设计任务要求 用Python实现一个面向主题的网络爬虫程序,并完成以下内容:(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台) 一.主题式网络爬虫设计方案( ...

  2. Python高级应用程序设计任务期末作业

    Python高级应用程序设计任务要求 用Python实现一个面向主题的网络爬虫程序,并完成以下内容:(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台) 一.主题式网络爬虫设计方案( ...

  3. python 高级之面向对象初级

    python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...

  4. python高级之函数

    python高级之函数 本节内容 函数的介绍 函数的创建 函数参数及返回值 LEGB作用域 特殊函数 函数式编程 1.函数的介绍 为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多 ...

  5. python高级之装饰器

    python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函数的定义: 满足下面两个条件之 ...

  6. python高级之生成器&迭代器

    python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...

  7. python高级之面向对象高级

    python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...

  8. python高级之网络编程

    python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...

  9. python高级之多线程

    python高级之多线程 本节内容 线程与进程定义及区别 python全局解释器锁 线程的定义及使用 互斥锁 线程死锁和递归锁 条件变量同步(Condition) 同步条件(Event) 信号量 队列 ...

随机推荐

  1. Install aws cli

    下载 https://s3.amazonaws.com/aws-cli/AWSCLI64PY3.msi 添加环境变量

  2. sign in with apple后端校验(java)

    最近新开发的ios平台的app在提审的时候,被拒了,原因是app上如果有接第三方登陆(比如,微信,微博,facebook等),那就必须要接apple id登陆,坑爹~苹果霸权啊!然而没办法,靠他吃饭, ...

  3. URL基本语法

    1.URL全称为Uniform Resource Locator,即统一资源定位符.对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一 ...

  4. PHP安装扩展补充说明

    上一篇文章中用到了,php的sodium扩展,那么如何安装PHP扩展呢?基于我之前踩过的一些坑,大致整理了几种安装php扩展的方法.已安装sodium为例 1.先做点准备工作,安装sodium依赖 r ...

  5. centos7安装samba

    samba是一个实现smb协议的开源软件,为局域网内的不同计算机之间提供文件和打印机共享服务. 1.安装yum groupinstall “file-server” -y 2.配置cp /etc/sa ...

  6. .net基础概念

    .net基础概念 1.       .NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件..NET Framework 具有两 ...

  7. java程序员面试宝典之——Java 基础部分(1~10)

    基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".java"源文件中是否可以包 ...

  8. Apache和PHP结合、Apache默认虚拟主机

    5月28日任务 课程内容: 11.14/11.15 Apache和PHP结合11.16/11.17 Apache默认虚拟主机 11.14/11.15 Apache和PHP结合 到目前为止虽然安装好了A ...

  9. SSO单点登录思路

    SSO (Single Sign On) 什么是单点登录: 在大型的互联网公司中会有多个系统, 多个项目, 虽然这些项目都属于同一家公司, 但是项目本身其实都是独立的, 那多个系统可不可以实现共享同一 ...

  10. 《Windows内核安全与驱动开发》 7.1&7.2&7.3 串口的过滤

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 7.1&7.2&7.3 串口的过滤 一.设备绑定的内核API ...