python tkinter界面 多进程启动scrapy爬取百度贴吧的回复,显示爬取进度,并可以搜索回帖人,指定时间生成词云图,用pyinstaller打包成exe(三)

本博客介绍如何利用Python tkinter创建一个显示Scrapy爬虫进度的界面,包括实时更新爬取进度、显示爬取信息,并在爬虫结束后生成词云图。同时,通过pyinstaller将程序打包成可执行文件(exe)。
摘要由CSDN通过智能技术生成

这次是显示爬取进度的tk界面:

 

'''显示爬取帖子进度,流程是:
    在spider里,每爬取完一段(每个帖子,或者每10页),返回item时,就把帖子标题、发帖人等信息写入info.json
    然后tree会不停的打开这个文件,当spider更新数据时,就添加到tree里
    在循环里,每15秒检查scrapy是否还在运行,一旦不在了,就终止循环
              还有打开the_spider_counts,更新理论爬取的item数量,一旦tree达到这个数量,也会中断循环'''

'''这个类是toplevel进度详情窗口的布局:
    难点有几个:1.爬取[帖子]/[贴吧] label显示的文字内容不同、tree的布局也不同,所以在init里设定了
                2.更新tree 已爬取的item 比较费劲,具体看show_it,(ps:如果多次按下按钮,其方法也会调用多次!)
    ##3个读取数据的json文件:
              1."config",tk上输入爬取 贴吧/帖子 的贴吧名/页数/存放路径 的信息
              2."爬取进度详情/TieXx_info.json",在spider返回item时,帖子标题、发帖人等信息
              3.“爬取进度详情/the_spider_counts”,在spider上获取的理论爬取item总数,
                 而当结束时,就会加多一行,这次爬取的总信息 贴吧名、页数、时间等
    '''

class display_window():
    def __init__(self,my_tk):
        self.my_tk=my_tk     #总的tk界面
        self.root=self.my_tk.show_text#当前的 [进度详情] 界面
        self.root.title('爬取进度')
        self.root.geometry('850x500+400+0')

        #当前的界面是【贴吧】,设定tree的头、Label显示的文字、需要打开的info.json
        if self.my_tk.Tid==False:
            self.columns = ("title", "author", "reply_num", "pages", "tid", "last_reply_author", "last_reply_time", "situation")
            self.the_head = ("标题", "发帖人", "回复数量", "总页数", "tid", "最后回复人", "最后回复时间", "爬取详情")
            self.widths = (350, 100, 35, 35, 70, 100, 120, 160)
            start_labeltext='当前选中的是爬取--------------┠贴吧┨'
            self.start_LabelText="'正准备爬取┠贴吧┨——————————————→『%s』'%self.tieba_name"
            self.crawing_LabelText="'正在爬取:某个贴吧『{}』——————进度:〔%s/%s〕——————耗时:%02d分:%02d秒'.format(self.tieba_name)"
            self.tiezi_info_path=r'爬取进度详情/TieBa_info.json'
            self.tid_posi=4    #tid在value的位置
        else: #当前的界面是【帖子】
            self.columns = ("title", "author",  "pages", "tid",  "situation")
            self.the_head = ('标题', '发帖人', "总页数", "tid", '爬取页数范围')
            self.widths = (400, 100, 00, 109,  200)
            start_labeltext = '当前选中的是爬取--------------┠帖子┨'
            self.start_LabelText="'正准备爬取┠帖子┨——————————————→『tid:%s』'%self.tid"
            self.crawing_LabelText="'正在爬取:单个帖子『{}』——————进度:〔%s/%s〕——————耗时:%02d分:%02d秒
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值