北京

点击搜索

发布

拉勾教育教你用Python制作一个NBA球员数据查询小程序

区域:
北京 > 海淀 > 中关村
类别:
软件工程师培训
地址:
创业大街
有时将代码转成带有界面的程序,会极大地方便使用,虽然在网上有很多现成的GUI系统,但是套用别人的代码,心里难免有些尴尬,所以本文将用Python爬虫结合wxpython模块构造一个NBA爬虫小软件 拉勾IT课小编为大家分解




本文框架构造将分为二个部分讲解:
1.      构建GUI界面
2.      举例套用爬虫框架
主要涉及的Python模块有
•      requests
•      wx
•      pymysql
•      pandas

二、GUI界面设计
首先介绍下流程:GUI界面设计讲解插入界面背景图片
设计GUI界面的代码思路其实很简单,首先导入wx库
import wx

这里引用的模块是wxpython模块,建立GUI的模块很多,常见的有PyQt、Tkinter等。这些模块各有各的优缺点,读者可以翻阅相关资料进行选择。
class MyFrame(wx.Frame):
  def __init__(self, parent, id):
    wx.Frame.__init__(self, parent, id, 'titlename',size=(400, 300))
    panel = wx.Panel(self)
    self.bt_confirm = wx.Button(panel, label='name1')
    self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
    self.bt_cancel = wx.Button(panel, label='name2')
    self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
    sel***itUI()

定义全局变量对于初级的GUI来说就是构建一个形式窗口+按钮布置,不需要自建一个模块。但对于高级的GUI诸如投资系统而言,全局变量是尤为重要的,换句话说全局变量需要放在一个py文件中初始化。
上述代码是创建部分的代码,个性化布局需要添加容器进行设置,稍后会在总代码中呈现。
  def InitUI(self):
    """ 点击InitUI,执行方法 """
   
  def OnclickSubmit(self,event):
    """ 绑定OnclickSubmit事件 """


简单来说就是绑定事件,该事件是你点击对应按钮产生的效果。这部是整个GUI的核心,如果你在做签到系统,那么你就要绑定一个导入员工名单txt文件的事件。
if __name__ == '__main__':
  app = wx.App()               # 初始化
  frame = MyFrame(parent=None,id=-1)  
  frame.Show()                
  app.MainLoop()               # 调用主循环
del app

第四步的基本套路就是如此。
三、举例实现
以一个简单的NBA爬虫系统为例,首先创建面板与布局
class MyFrame(wx.Frame):
  def __init__(self, parent, id):
    wx.Frame.__init__(self, parent, id, 'NBA可视化',size=(400, 300))
    panel = wx.Panel(self)
    self.bt_confirm = wx.Button(panel, label='合同信息')
    self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
    self.bt_cancel = wx.Button(panel, label='清空')
    self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
    self.bt_imf = wx.Button(panel, label='可视化')
    self.bt_imf.Bind(wx.EVT_BUTTON,self.Onclickvisual)
    self.bt_team = wx.Button(panel, label='球队信息',pos=(280,20))
    self.bt_team.Bind(wx.EVT_BUTTON,self.Onclickteam)
    self.bt_obtain = wx.Button(panel, label='球员信息',pos=(20,20))
    self.bt_obtain.Bind(wx.EVT_BUTTON,self.Onclickimfor)
    self.bt_ml = wx.Button(panel, label='得分榜')
    self.bt_ml.Bind(wx.EVT_BUTTON,self.Onclickmql)  
    self.title = wx.StaticText(panel, label="NBA可视化")
    self.label_user = wx.StaticText(panel, label="球队名称")
    self.text_user = wx.TextCtrl(panel, style=wx.TE_LEFT)
    self.label_pwd = wx.StaticText(panel, label="球员名称")
    self.text_pwd = wx.TextCtrl(panel, style=wx.TE_LEFT)
    self.label_path = wx.StaticText(panel, label="储存路径")
    self.text_pathword = wx.TextCtrl(panel, style=wx.TE_LEFT)

然后添加容器,横向排列
  hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
    hsizer_user.Add(self.label_user, proportion=0, flag=wx.ALL, border=5)
    hsizer_user.Add(self.text_user, proportion=1, flag=wx.ALL, border=5)
    hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
    hsizer_pwd.Add(self.label_pwd, proportion=0, flag=wx.ALL, border=5)
    hsizer_pwd.Add(self.text_pwd, proportion=1, flag=wx.ALL, border=5)    
    hsizer_path = wx.BoxSizer(wx.HORIZONTAL)
    hsizer_path.Add(self.label_path, proportion=0, flag=wx.ALL, border=5)
    hsizer_path.Add(self.text_pathword, proportion=1, flag=wx.ALL, border=5)    
    hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
查看更多北京电脑/网络信息

免责声明:此信息系发布者(UID:706755)自行发布,本站是服务平台,仅提供信息存储空间服务,该信息内容的真实性及合法性由该发布者完全负责。

© lieju.com 联系我们