python 比价_爬虫+网站开发实例:电影票比价网

news/2024/5/14 7:15:46/文章来源:https://blog.csdn.net/weixin_39896839/article/details/111631490

94d7d0f66416a3c210fc132e5c68982a.png
注:一篇去年的旧文,发现没在知乎发过,过来补个档。有个小问题是项目中淘票票的网页反爬提升且变动较多,目前暂不可用了。

时常有同学会问我类似的问题:我已经学完了 Python 基础,也照着例子写过一点爬虫代码 / 了解过 django 的入门项目 / 看过数据分析的教程……然后就不知道要做什么了。接下来应该如何继续提升编程能力呢

我的答案很简单:

做项目

不要把“项目”想象得太复杂,觉得一定是那种收钱开发的才能称作项目(如果有这种项目当然会更好)。对于刚刚跨入编程世界的你来说,任何一个小项目都是好的开始。你所需要的,就是一双发现问题的眼睛。生活中工作中的一些小事情小麻烦,多想一步,是不是可以写一小段代码来解决。

一开始,或许你的解决方案很笨拙,很复杂,本来5分钟就能搞定的事情,你写代码却花了一个小时。但对你来说,此时的目的并不只是解决问题,而是这个过程本身。在折腾的过程中,你的经验才会增长。这是你单纯看教程所无法达到的,再好的教程也替代不了动手。(有时候会有人评论说,这功能直接用xxx就可以了,干嘛还要自己写代码。对此我不做评价,因为我知道他不是来学编程的。)

我们编程教室也陆续提供了一些项目案例。你可以参考我们的示例代码,或者更好的是,自己去思考一个解决方案并实现。我们的案例不少都放在了网站 http://lab.crossincode.com 上演示,欢迎大家去浏览。内容会持续更新,可留意我们微信公众号和知乎专栏里的文章。

今天介绍的这个项目就源自生活中的一个场景:买电影票

当你打算周末出门看场电影的时候,就必然面临三个终极问题:

  1. 看什么?
  2. 什么时候看?
  3. 去哪儿看?

通常你只需要打开常用的购票App,选一部最近口碑不错的片子,去熟悉的影院看看有哪些场次就可以了。但有时你也会发现,同样一部电影,不远的两家影院,价格就差很多,不同的购票App也会因为促销活动之类有不同的优惠力度,一张票可能会相差几十元。但如果每次都去几个App把最近的排片和价格都浏览一遍,那也太麻烦了。于是就有了我们这个小项目:

电影票比价网

f007a6606a2b4e2c190e3eca4915596d.png

在我们这个网页上,会展示出当前热映的电影。进入每部电影,选择城市区域影院日期,就可以看到最近的排片时间和不同渠道的价格。目前,我们是从糯米淘票票时光网三个渠道获取价格来做演示。(注:项目中淘票票现已失效)

1a9e8395db756209b5d616d01c701e25.png

实现技术

本项目是对爬虫和Web网站的综合运用,适合已经有掌握python基础,并且对此有一些了解的同学作为练手项目。涉及到模块主要是:

  • Django(1.10)
  • requests
  • bs4
  • python-Levenshtein(用来匹配不同渠道的影院信息)

代码结构

项目主要有三块:

  1. douban_movie
    使用豆瓣 api 每日更新上映的影片列表。
  2. movie_tickets
    项目的核心部分,用来处理影院信息和排名信息的抓取。
  3. django
    项目本身是一个网站,整体是在 django 的框架之中。

开发思路

  1. 使用爬虫爬取各电影票网站所有的电影院链接,作为基本的数据保存下来
  2. 使用豆瓣 API 获取当日上映的电影信息,并每天更新
  3. django 显示电影信息,提供给用户选择电影院的接口
  4. 将影片和影院信息发送到 django 后台进行查询,爬取对应的排片信息显示给用户

代码片段

# 获取淘票票某地区某电影院某影片价格# 
1. 根据查询条件获取影院 id# 
2. 根据影院 id 获取该影院正在上映电影# 
3. 获取 查询电影的排片时间表链接# 
4. 拿到价格
def get_movie_tickets(self, *args):assert len(args) == 4, 'not enough parameters n type in -h for help'movie_name = args[3]mt = TaoppDt()cinema_url = mt.search(*args[:3])assert cinema_url, '未查询到该电影院'pattern = re.compile(r'cinemaId=(d+)')cinemaid = re.findall(pattern, cinema_url)[0]film_url = 'https://dianying.taobao.com/cinemaDetailSchedule.htm?cinemaId=' + str(cinemaid)content = self.rq.req_url(film_url)assert content, '请求失败,请检查 /utils/req.py 中 req_url 函数是否工作正常'soup = bs4.BeautifulSoup(content, 'lxml')soup_film = soup.find('a', text=re.compile(movie_name))assert soup_film, '未查询到该电影'film_param = soup_film['data-param']return self._get_ticket_info(film_param)

其他说明

  1. 项目为了有一个较好的交互效果,在页面上用到了不少 Ajax 请求。这需要有一定的前端 js 基础。对网页前端不熟悉的同学可暂且略过,重点关注后端实现。
  2. 不同渠道对于同一家影院的名称很可能有出入,因此这里使用了 python-Levenshtein 来对文本进行匹配。
  3. 代码里在抓取时有用到我们的另一个项目:IP代理池(参见 Crossin:听说你好不容易写了个爬虫,结果没抓几个就被封了?)。但因为服务器资源有限,有时拿不到可用的代理。各位自己电脑上运行代码时,可尝试把 requests 的 proxies 参数去除。
  4. 作为一个演示项目,必然存在一些bug(当然商业项目也不可能没有bug),加上爬虫的程序极有可能因为对方网站更新而失效。所以如果遇到问题,欢迎大家给我们报错。

代码下载

完整的代码详细代码说明已上传 Github,获取下载地址请在公众号(Crossin的编程教室)里回复 电影票

════

其他文章及回答:

学编程:如何自学Python | 新手引导 | 一图学Python

开发案例:智能防挡弹幕 | 红包提醒 | 流浪地球

欢迎搜索及关注:Crossin的编程教室

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_701464.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SEO快速排名算法独家揭秘

在2015年11月份的时候在卢松松博客投递了一份关于SEO快速排名独家揭秘的算法流程,时过境迁已经过去了大半年,随之而来的也是搜索引擎的点击算法也发生了一些变化,这次我将完善以前的一份算法资料。下面我将提供完整的SEO快速排名点击算法流程…

大型网站架构系列:缓存在分布式系统中的应用(一)

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 本文是缓存在分布式应用第一篇文章,介绍缓存的原理,缓存的分类,缓存的设计,C…

怎样使用CSS3媒体查询(Media Queries)制作响应式网站

自本周开始博主将开始同大家一起研究响应式web设计,CSS3 Media Queries是入门,本周更新,博主将给大家分享media queries的一些常用的用法及注意事项。 Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,…

squid正反向代理-加快网站访问速度

配置squid代理服务器加快网站访问速度一:squid服务概述Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服…

名称:53KF网站客服系统 v3.0.1官方版

2019独角兽企业重金招聘Python工程师标准>>> 名称:53KF网站客服系统 v3.0.1官方版 版本:3.0.1 软件大小:107 KB 软件语言:简体中文 软件授权:免费版 应用平台:Win7/Win2003/Vista/Win2000/WinXP…

《网站设计 开发 维护 推广 从入门到精通》——2.3 页面设计创意思维

本节书摘来自异步社区《网站设计 开发 维护 推广 从入门到精通》一书中的第2章,第2.3节,作者: 何新起 , 娄彦杰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 页面设计创意思维 一个网站如果想确立自己的形象,就必须…

【全栈项目上线(vue+node+mongodb)】04. 怎么在一台主机上面部署多个网站,详细操作指南...

怎么在一台主机上面部署多个网站 使用Nginx的虚拟化配置 环境 使用一键安装lnmp环境请参考 https://segmentfault.com/a/11... 第一步:执行 lnmp vhost add lnmp vhost add 输入自己要绑定的域名,比如我现在需要绑定 itnote.cn 我在这个地方输入&#xf…

java门户网站项目代码_基于jsp的企业门户网站-JavaEE实现企业门户网站 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的企业门户网站, 该项目可用各类java课程设计大作业中, 企业门户网站的系统架构分为前后台两部分, 最终实现在线上进行企业门户网站各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类企业门户网站相关的实体…

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(《后台管理UI的选择》)介绍了选择过程与常用后台UI,令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间,最后界面效果还是不佳&#xf…

谈谈读“SEO实战密码”的一些感悟

写在前面:SEO是叱咤网络营销、线上营销十多年的工具之一,当前不管是搜索引擎平台、电子商务平台、任何线上平台,都还在参考引用和不断完善SEO这门营销艺术。作为一新兴而又颇受争议的网络营销工具,从发展、进阶、火热、低迷的这一…

专家也要小心,HTTPS网址的网站就一定安全吗?

随着越来越多网站使用 SSL以提升在 Google搜寻中的排名(请参考安全牛之前的报道”谷歌调整搜索排名算法,激励网站采用HTTPS安全协议“),使用者将必须了解到 HTTPS 前缀不再是他们判断网站是否安全的识别标志。他们必须在输入认证数…

15 -Flask构建弹幕微电影网站-基于角色的访问控制

本章内容: 基于角色的访问控制 已上线演示地址: http://movie.mtianyan.cn 项目源码地址:https://github.com/mtianyan/movie_project 基于角色的访问控制 角色的访问控制: 将职责和功能划分一个角色,比如电影管理员,预告管理员。 模型: Auth…

菜鸟站长应该如何防止网站被恶意攻击

随着互联网的发展,很多人都已经有了自己的网站。无论是企业,商家还是个人。以前,做一个网站都得在上千上万元。如今,网站建设的的价格也不再那么贵了,几百块钱就可以做一个网站。而且,这些几百块钱的网络公…

漫画:为什么一到年底,部分网站就会出现日期混乱?

作者 | 漫话编程本文经授权转载自漫话编程(ID:mhcoding)2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。于是我拿过他的…

百度或者Google---SEO优化

google和百度的技术差别: 1.百度还认不清哪个是原创的 2.google蜘蛛不够百度快 4.google排名结果随时变化 流量、权重、权威、内容、用户体验、用户关注度等等细节的排名,已表达了SEO的算法。 重要搜索引擎的网站登录入口地址: http://www.webmasterhome.cn/seo/add…

_网站建站基础第十一课(域名解析服务器环境linux安装宝塔)

在服务器,域名(国内备案)购买好之后,就可以开始搭建网站了,建站要为服务器解析好域名,然后配置好服务器环境,服务器环境就以linux系统宝塔面板为例给大家演示:域名备案成功后,进入服务器商的控制…

御用导航官方网站提醒提示页_电脑上使用便签记录工作计划如何设置闹钟定时提醒?...

平常工作日程事务比较多时,就很容易忘掉一些工作,这个时候很多工作族会选择经常使用的电脑工具来记录每日的工作计划,电脑如何设置闹钟定时提醒工作计划呢?电脑便签可以用来记录工作计划闹钟定时提醒的软件,建议使用敬…

关于大型网站技术演进的思考(七)--存储的瓶颈(7)

本文开篇提个问题给大家,关系数据库的瓶颈有哪些?我想有些朋友看到这个问题肯定会说出自己平时开发中碰到了一个跟数据库有关的什么什么问题,然后如何解决的等等,这样的答案没问题,但是却没有代表性,如果出…

高并发网站解决方案

2019独角兽企业重金招聘Python工程师标准>>> 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业…

服务器安装织梦网站数据库,DedeCMS数据库及服务器空间更换教程

网站空间不稳定会影响SEO优化的效果,因为会降低搜索引擎对于网站的信任度判断,特别是最近使用香港空间的网站,会经常性遇到网站无法打开,或者打开速度非常慢,为了彻底解决稳定问题,唯有更换服务器空间&…