码迷,mamicode.com
首页 > 编程语言 > 详细

Python一日一练06----怒刷点击量pyqt5版

时间:2015-08-25 19:35:32      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:python   pyqt5   多线程   

功能

输入博主用户名,增加博主点击量


软件截图

技术分享

部分源码

# coding=utf-8
__author__ = 'a359680405'

from PyQt5 import QtWidgets
from PyQt5.QtCore import QThread
from PyQt5.QtCore import pyqtSignal
from visitspage.UI.MainForm import Ui_MainForm
from visitspage.UI.newForm import Ui_newForm
import  re,time
import urllib.request

from bs4 import BeautifulSoup

class WorkThread(QThread):
    _strName="a359680405"
    _brushNum=50
    trigger=pyqtSignal(str)                         #传参

    def __init__(self,strName,brushNum):
        super(WorkThread,self).__init__()
        self._strName=strName
        self._brushNum=brushNum

    def run(self):
        p=re.compile('/'+self._strName+'/article/details/........')
        #自己的博客主页
        url = "http://blog.csdn.net/"+self._strName
        #使用build_opener()是为了让python程序模仿浏览器进行访问
        opener = urllib.request.build_opener()
        opener.addheaders = [('User-agent', 'Mozilla/5.0')]
        try:
            html = opener.open(url).read().decode('utf-8')
        except urllib.error.HTTPError:
                      #print('urllib.error.HTTPError')
                      self.trigger.emit('无此用户 ')
                      time.sleep(1)#出现错误,停几秒先

        allfinds = p.findall(html)
        #print(allfinds)
        self.trigger.emit(str(allfinds))

        urlBase = "http://blog.csdn.net"#需要将网址合并的部分
        #页面中的网址有重复的,需要使用set进行去重复
        mypages = list(set(allfinds))
        for i in range(len(mypages)):
            mypages[i] = urlBase+mypages[i]

        #print('要刷的网页有:')
        self.trigger.emit('要刷的网页有:')
        for index , page in enumerate(mypages) :
            # print(str(index), page)
            self.trigger.emit(str(index)+ page)

        #所有的页面都刷
        #print('下面开始刷了哦:')
        self.trigger.emit('下面开始刷了哦:')
        for index , page in enumerate(mypages) :
            for j in range(self._brushNum):
                 try :
                      pageContent = opener.open(page).read().decode('utf-8')
                      #使用BeautifulSoup解析每篇博客的标题
                      soup = BeautifulSoup(pageContent)
                      blogTitle = str(soup.title.string)
                      blogTitle = blogTitle[0:blogTitle.find('-')]
                      #print(str(j) , blogTitle)
                      self.trigger.emit(str(j)+" "+ blogTitle)

                 except urllib.error.HTTPError as e:
                      #print('urllib.error.HTTPError')
                      self.trigger.emit('urllib.error.HTTPError ')
                      time.sleep(1)#出现错误,停几秒先

                 except urllib.error.URLError:
                      #print('urllib.error.URLError')
                      self.trigger.emit('urllib.error.URLError')
                      time.sleep(1)#出现错误,停几秒先

                 time.sleep(0.1)#正常停顿,以免服务器拒绝访问




class VpForm(QtWidgets.QMainWindow,Ui_MainForm):
    def __init__(self):
        super(VpForm,self).__init__()
        self.setupUi(self)
        self._worker=[]
        self._form=[]

        self.submitBt.clicked.connect(self.shua)

    #索引增加
    def shua(self):
            thread=WorkThread(self.nameLe.text(),int(self.numLe.text()))
            form=NewForm()
            thread.trigger.connect(form.display)
            form.show()
            thread.start()

            self._worker.append(thread)
            self._form.append(form)




class NewForm(QtWidgets.QWidget,Ui_newForm):
    def __init__(self):
        super(NewForm,self).__init__()
        self.setupUi(self)
    def display(self,m):
        self.displayTb.append(m)

if __name__=="__main__":
    import sys
    app=QtWidgets.QApplication(sys.argv)
    myshow=VpForm()
    myshow.show()
    sys.exit(app.exec_())



源码地址http://download.csdn.net/detail/a359680405/9046865

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python一日一练06----怒刷点击量pyqt5版

标签:python   pyqt5   多线程   

原文地址:http://blog.csdn.net/a359680405/article/details/47981353

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!