zoukankan      html  css  js  c++  java
  • lab项目之一阿森纳赛事指南客户端版本

      搭建自己的lab实验室,发现这个极大的激发了自己对很多日常问题的敏感度。自学脚本也两个多月了,测试过二维验证码,试过爬新浪微博。这周终于花了一天和两个晚上把这个客户端指南版本写出来了,大概500多行的代码,遇到的问题却很多。现在来分析一下:

          1:关于字符编码:我用的python版本是2.7,要想支持中文只要找对方法即可,一般的做法是在文件头加入#coding:utf-8然后再编码解码;而在用BeautifulSoup进行html分析时,为了打印NavigableString,可以是用reqr(),中文打印出来时是unicode编码,我用的Qt的Qstring作为转换显示的;

          2:关于线程通信:如果一个线程要等待另外一个线程工作完成之后再起作用,可以对被调用线程是用join()挂起;在这个客户端版本中使用了一个简单的线程池来爬取网页,由于是定向分析,所以线程池中的线程从来没有超过10个;不过没有尝试使用对联来管理url,而是用了锁,对于多线程共享变量应用起来差不多;

          3:关于进度条:我要实时获取爬虫的进度,并对进度进行可视化并在得到结果后终止爬虫线程。刚开始使用的方法是在主线程循环获取爬虫线程的urls,直接导致UI卡死,后来采用了时钟的方法解决(不过我仍然不建议采用时钟控制,因为时钟总感觉会造成bug);终止爬虫线程采用了大家常说的优雅做法,加个标记,而不是直接terminate;

          4:关于Log的获取:主要要考虑异常情况退出时是否完成写,所以也要考虑到尽量多的异常,并在出现异常时把IO缓冲区的数据flush到文件中,防止数据丢失。

      大致测试了没问题,等欧冠比赛开始再测试一下,附上截图:

         搜索前:

         

      搜索后:

         

          ps: 导师告诉我不要花费太多的时间去研究前端这些东西,我也在想如何成为一名不错的工程师,黑客与画家能够告诉我一部分答案,不过还不够。光棍节了,祝大家快乐,还有小季同学,生日快乐呀!

  • 相关阅读:
    win8 vs2010 openni2 配置
    写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的十个词打印出来。
    电梯调度
    new 一个button 然后dispose,最后这个button是null吗???
    org.apache.hadoop.security.AccessControlException
    算法导论第二章、插入排序
    算法导论第六章、堆排序
    算法导论第八章、计数排序
    观后感
    第二次随笔
  • 原文地址:https://www.cnblogs.com/bite_the_bullet/p/2764856.html
Copyright © 2011-2022 走看看