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

Python爬虫与数据挖掘

共 594字,需浏览 2分钟

 ·

2020-12-18 17:36

击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

商人重利轻别离,前月浮梁买茶去。

/前言/

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


/项目目标/

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


/依赖工具/

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


/实现步骤/

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

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

打开网页,F12分析:

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

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

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

def parse_page(self,html):    #编译页面电影内容正则    pattern = re.compile('(.*?)<.*?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("<>",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) #内容写入文件

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


/小结/

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

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

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

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报