手把手教你使用Python打造一个爱奇艺热播好剧提前搜系统

Karen110
• 阅读 1114

/前言/

今年的疫情让我们很多人对于打工望而却步,没办法,钱可以再挣,但是生命只有一次,于是,宅在家的我们无事可做,只好看看电影来打发下我们无聊的时间。

/项目目标/

通过选择爱奇艺电影选项,我们可以将优质的电影信息打印到文本框供自己查看,然后自己去观看。

/依赖工具/

开发工具sublime text 3,360浏览器。

/实现步骤/

下面我们先看下软件运行主界面,比较简单:

手把手教你使用Python打造一个爱奇艺热播好剧提前搜系统

下面小编就来跟大家讲下具体的实现步骤。

打开网页,F12分析:

手把手教你使用Python打造一个爱奇艺热播好剧提前搜系统

可以看到,它是由一个ul标签包裹,多个li子标签构成,所以我们可以这样做:  

手把手教你使用Python打造一个爱奇艺热播好剧提前搜系统

这样就拿到了,所有影片的名字 主演和评分,就能方便我们直观的查看电影状况,再决定看哪一部。

其实还有一种比较有逼格的写法,就是用正则匹配。


def parse_page(self,html):
    #编译页面电影内容正则
    pattern = re.compile('<li.*?qy-mod-li.*?text-score">(.*?)<.*?title.*?>(.*?)<.*?title.*?>(.*?)<', re.S)
    items = re.findall(pattern, html)  #查找
    for item in items:
      yield {
        'Movie_Name':  item[1],              #电影名
        'Movie_actor': item[2].strip()[3:],  #演员
        'Movie_score': item[0]               #评分

      }

选择哪种方法随你挑,适合自己的才是最好的,哈哈哈!

然后,我们可以写个gui界面将我们所想要的结果显示在界面上,因为我们这次使用的是下拉列表框选择选项然后显示结果,我们需要使用一个新的gui组件 combobox组件,于是,可以这样写:


class gui:
  def __init__(self):
    self.root=tk.Tk()
    self.root.title("爱奇艺热播好剧提前搜v1.0") 
    self.root.geometry("700x600")
    self.lb=tk.Label(self.root,text='请选择搜索类型')
    self.tt=tk.Text(self.root,width=40,height=30)
    self.cb=ttk.Combobox(self.root, width=12)
    self.cb['values']=('请选择-----','综合排序','热播榜','好评榜','新上线') #设置下拉列表框的内容   
    self.cb.current(0)    #将当前选择状态置为0,也就是第一项
    self.cb.bind("<<ComboboxSelected>>",self.go)  #绑定go函数,然后触发事件
    self.lb.place(x=30,y=30) #组件位置
    self.cb.place(x=154,y=30)
    self.tt.place(x=30,y=60,width=400,height=600)
    self.root.mainloop()     #主页面

这样就写好了,然后我们还可以将数据写入到文本文件。

def write_to_file(self,content):
    with open('movie.txt', 'a', encoding='utf8')as f:
      f.write(json.dumps(content, ensure_ascii=False) + '\n')  #写入文件

因为yield 出的结果使用json好读取些,而且具有格式化的功能,所以可以先把文件先转为json格式,这样就可以了。

然后我们编写下拉列表框的函数,使得它选择选项时出现对应的结果。

#下拉列表框事件
  def go(self,*arg):
    if self.cb.get()=='请选择-----':
      self.tt.delete('1.0','end')
    elif self.cb.get()=='综合排序':
      self.tt.delete('1.0','end')
      self.main('https://list.iqiyi.com/www/1/-------------24-1-1-iqiyi--.html')
    elif self.cb.get()=='热播榜':
      self.tt.delete('1.0','end')
      self.main('https://list.iqiyi.com/www/1/-------------11-1-1-iqiyi--.html')  
    elif self.cb.get()=='好评榜':
      self.tt.delete('1.0','end')
      self.main('https://list.iqiyi.com/www/1/-------------8-1-1-iqiyi--.html')  
    elif self.cb.get()=='新上线':
      self.tt.delete('1.0','end')
      self.main('https://list.iqiyi.com/www/1/-------------4-1-1-iqiyi--.html')

这里要注意的是,因为我们每次选择不同,所以在选择第二个选项时必须清楚前一个选项所显示的结果。

最后,我们执行主函数,完成这些操作。


#主函数
  def main(self,url):
    html = self.get_page(url)
    for item in self.parse_page(html):
      self.tt.insert('insert',item)#将内容插入到文本框
      self.tt.insert('insert','\n')
      self.tt.update()  #更新内容
      self.write_to_file(item) #内容写入文件

我们可以看到效果图如下:

手把手教你使用Python打造一个爱奇艺热播好剧提前搜系统

/小结/

1、本文基于Python编程语言,打造了一个爱奇艺热播好剧提前搜系统,方法行之有效,欢迎小伙伴们积极尝试。本项目对于初学者来说还是比较友好的,希望可以帮到大家。学无止境,一起加油!

2、需要本文代码的小伙伴可以在后台回复“热播好剧”四个字进行获取。

想学习更多关于Python的知识,可以参考学习网址:http://pdcfighting.com/,点击阅读原文,可以直达噢~

**-----**------**-----**---**** End **-----**--------**-----**-****

往期精彩文章推荐:

手把手教你使用Python打造一个爱奇艺热播好剧提前搜系统

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/rnGiRKvxRDpGUns_4ZhuTw,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
4个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
Irene181 Irene181
1年前
用Python打造批量下载视频并能可视化下载进度的炫酷下载器
大家好,我是Python进阶者,今天给大家整点好玩的,一起来看看吧【一、项目背景】平时宅在家的我们最爱做的事莫过于追剧了,但是有时候了,网络原因,可能会让你无网可上,这个时候那些好看的电视剧和电影自然是无法观看了,本期我们要讲的就是怎样下载这些视频。【二、项目目标】通过Python程序对所感兴趣的视频进行批量下载,正好小编近期看到一些不错的视频,因为想
Irene181 Irene181
1年前
用Python打造批量下载视频并能可视化下载进度的炫酷下载器
大家好,我是Python进阶者,今天给大家整点好玩的,一起来看看吧【一、项目背景】平时宅在家的我们最爱做的事莫过于追剧了,但是有时候了,网络原因,可能会让你无网可上,这个时候那些好看的电视剧和电影自然是无法观看了,本期我们要讲的就是怎样下载这些视频。【二、项目目标】通过Python程序对所感兴趣的视频进行批量下载,正好小编近期看到一些不错的视频,因为想
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
1年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
1年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
1年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
helloworld_34035044 helloworld_34035044
6个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为