zoukankan      html  css  js  c++  java
  • 抖店商品链接导出到桌面

    # -*- coding: utf-8 -*-
    from PyQt5.Qt import (QThread, QMoveEvent, QResizeEvent, QPaintEvent, QCloseEvent)
    from PyQt5.QtCore import (QFileInfo, QSize, QPoint, QRect, QSize, Qt, QUrl, QObject, pyqtSlot, pyqtSignal)
    from PyQt5.QtWidgets import (QLabel, QLineEdit, QPushButton, QHBoxLayout, QWidget, QApplication, QMainWindow)
    import requests
    import time, re
    from urllib import parse
    import winreg
    
    class ThreadParse(QThread):
        _signal = pyqtSignal(str, str)
    
        def __init__(self, shopid='', sellnum=0):
            super().__init__()
            self._shopid = shopid
            self._sellnum = sellnum
    
        def run(self):
            for i in range(0, 100):
                ismore = self.worker(self._shopid, self._sellnum ,i)
                if not ismore:
                    break
    
        def worker(self, encrypt_shop_id, sell_num=2, page=1):
            ismore = True
            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'}
            cookies = {'sessionid': ''}
            url = 'https://ec.snssdk.com/productcategory/getShopList?shop_id=%s&type=5&sort=0&size=50&page=%s&b_type_new=0&device_id=0&is_outside=1' % (encrypt_shop_id, page)
            res = requests.get(url, headers=headers, cookies=cookies).json()
            if res['st'] == 0:
                if len(res['data']['list']) > 0:
                    for item in res['data']['list']:
                        sellNum = item['sell_num']
                        sellNum = re.sub("D", "", sellNum)
                        if int(sellNum) > int(sell_num):
                            self._signal.emit(item['product_id'], 'run')
                else:
                    self._signal.emit('0', 'success')
                    ismore = False
            return ismore
    
    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
            self.setWindowTitle('抖店商品链接导出')
            self.createStatusBar()
            self.createLayouts()
            self.resize(500, 100)
            self.root = self.get_desktop()
    
        def get_desktop(self):
            key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders')
            return winreg.QueryValueEx(key, "Desktop")[0]
    
        def shopid(self, url):
            try:
                result = parse.urlparse(url)
                query_dict = parse.parse_qs(result.query)
                return query_dict['id'][0]
            except Exception as e:
                return 'error'
    
        def btnStart_click(self):
            self.shop_id = self.shopid(self.urlLabel.text())
            self.sell_num = self.numLabel.text()
            if self.shop_id == 'error':
                self.statusBar().showMessage(" 网址解析错误")
            else:
                self.btnStart.setText('正在保存..')
                self.btnStart.setEnabled(False)
                self.tdParse = ThreadParse(self.shop_id, self.sell_num)
                self.tdParse._signal.connect(self._writeCSV)
                self.tdParse.start()
    
        def _writeCSV(self, product_id, msg):
            if msg == 'success':
                self.btnStart.setText('开始')
                self.btnStart.setEnabled(True)
                self.statusBar().showMessage(" 完成,文件已保存在桌面")
            else:
                shopdetail = 'https://haohuo.jinritemai.com/views/product/detail?id=%s' % product_id
                with open(self.root + ('/%s.csv' % self.shop_id), 'a+', encoding='utf-8') as f:
                    f.write('
    '+shopdetail)
                self.statusBar().showMessage(" 正在保存商品 %s" % product_id)
    
        def createStatusBar(self):
            self.statusBar().showMessage(" 输入店铺网址, 销量大于几件 > 开始")
    
        def createLayouts(self):
            self.urlLabel = QLineEdit()
            self.urlLabel.setPlaceholderText('店铺网址')
            self.numLabel = QLineEdit()
            self.numLabel.setFixedSize(40, 20)
            self.numLabel.setText('2')
            self.btnStart = QPushButton('开始')
            self.btnStart.clicked.connect(self.btnStart_click)
    
            self.mainLayout = QHBoxLayout()
            self.mainLayout.addWidget(self.urlLabel)
            self.mainLayout.addWidget(self.numLabel)
            self.mainLayout.addWidget(self.btnStart)
    
            self.mainWidget = QWidget()
            self.mainWidget.setLayout(self.mainLayout)
            self.setCentralWidget(self.mainWidget)
    
    if __name__ == '__main__':
    
        import sys
        app = QApplication(sys.argv)
        mainWin = MainWindow()
        mainWin.show()
        sys.exit(app.exec_())
  • 相关阅读:
    9-单表查询
    02-数据库概述
    01-MySql的前戏
    mysql+centos7+主从复制
    Mac下安装ipython与jupyter
    python开发之virtualenv与virtualenvwrapper讲解
    python操作redis
    权限管理具体代码实现
    docker入门
    多用判断&&
  • 原文地址:https://www.cnblogs.com/6min/p/14738759.html
Copyright © 2011-2022 走看看