在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)

拼多多现在也是越来越火了,但是不知道大家有没有发现,拼多多似乎一直不能通过网页进行访问。淘宝,京东都有微信客户端,那么怎么拼多多就没有呢?带着这个疑问,我特地去手机爬取了一下拼多多的客户端。(其实也不能说是爬取吧,就是随便玩玩!)

文章目录

拼多多的域名…

事情是这样的,当时呢,我看中了一款洗手液…

在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
于是我点击了一下复制链接,就像这样
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)

https://mobile.yangkeduo.com/goods.html?goods_id=251325707271&page_from=36&_oc_source=66&pxq_secret_key=DRSSQMYYXEKMEMA2NIMG3VFPBE4TFV3V4QT4IDZ7R7QML57MNXMQ&share_uin=OKCYL2UFPVNZK67UCUDUFQNRCQ_GEXDA&refer_share_id=694d23239e514c43b93dbfbfd2c675ef&refer_share_uid=8601252201574&refer_share_uin=OKCYL2UFPVNZK67UCUDUFQNRCQ_GEXDA&refer_share_channel=qq&refer_share_form=card&_wvx=10

没错,就是一个这样的链接,于是我真的感觉很奇怪,不是网站版的拼多多域名是pingduoduo.com吗?
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
结果,当我将这个链接复制到浏览器中运行,发现的确是真的!

在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
不会吧,难道我使用的拼多多一直都是盗版的?
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
于是我来了一波域名查询,发现竟是
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
阿里云注册的,应该不会是什么小网站,但是所有者我们还是不知道啊,所以我去到了爱企查进行进一步的查询
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
在上海寻梦科技下方,终于发现了这一行域名
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
好吧,在浏览的时候,我还发现了另一个拼多多域名,http://yiqixiegushi.com/,于是我就想着,要不我做一个程序,这样在网上就可以抢拼多多商品了

程序构思

基础窗口

于是我就开始了,这显然是一个网页页面,我们有很多种选择,在这里,我们选择了PyQt库进行操作,于是便开始了编代码…
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
首先呢,我们先来创建一个购物中心的类,然后我们将创建一个无边框的窗口,并显示在主页面上。

# 程序名称 : ShoppingCentre
# 制作时间 : 2021年6月12日
# 运行环境 : Windows 10

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *

# 创建主程序
class ShoppingCentre(QMainWindow):
	def __init__(self):
		super().__init__()
		self.grabKeyboard() 
		self.setWindowTitle("拼多多商城")
		self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.WindowMinimizeButtonHint|Qt.FramelessWindowHint)		
		self.show()

if __name__ == "__main__":
	import sys

	# 准备打开网站
	app = QApplication(sys.argv)
	win = ShoppingCentre()
	app.exec_()

接下来我们将设置这个窗口的大小,并固定大小,所以我们来搜索一下手机的长宽比例一般是多少,并参照一下模拟器的长宽值
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
所以说宽度一般是600,高度一般是1100左右,并设置出现位置在屏幕*,也就是电脑屏幕的宽度减去我们窗口宽度,然后除二的值,在我这里呢,是(1980-600)/2 也就是690
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
经过我的测试,发现屏幕在600和1050这个比值中是最合适的,然后锁定我们的长和宽,接下来,我们去官网爬取图片,设置图标
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
拼接地址,得到最终图标,并保存https://www.pinduoduo.com/homeFavicon.ico
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
我们可以看到,我们成功设置了图标(注意,最终图片的命名是以从网站下载下来命名后的文件)
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)

# 程序名称 : ShoppingCentre
# 制作时间 : 2021年6月12日
# 运行环境 : Windows 10

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *

# 创建主程序
class ShoppingCentre(QMainWindow):
	def __init__(self):
		super().__init__()
		self.grabKeyboard() 
		self.setWindowTitle("拼多多商城")
		self.setGeometry(690,10,600,1050)
		self.setFixedSize(600,1050)
		self.setWindowIcon(QIcon('images/pdd.ico'))
		self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.WindowMinimizeButtonHint|Qt.FramelessWindowHint)	

		self.show()

if __name__ == "__main__":
	import sys

	# 准备打开网站
	app = QApplication(sys.argv)
	win = ShoppingCentre()
	app.exec_()

实现浏览器

首先我们先重写一下方法,实现网页跳转
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)

然后将这个浏览器添加进设置中
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
运行程序,我们可以发现,页面已经可以正常显示了
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
可是我们会发现,我们没有按钮,我们只能右键点击操作后退或者前进,这实在是太麻烦了
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
那么我们设置一个状态栏进行操作程序,这里我们就需要自行找图标,我这里使用的呢,是阿里巴巴图标库提供的图标
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
我们在代码中添加工具栏,然后设置图标大小
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
添加图片,并将其添加到状态栏上面
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
最后绑定事件,我们就成功制作了这个程序了
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
再次使用我们会发现整个用户体验加强了
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)

# 程序名称 : ShoppingCentre
# 制作时间 : 2021年6月12日
# 运行环境 : Windows 10

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *

# 重写方法
class WebEngineView(QWebEngineView):
	def createWindow(self,QWebEnginePage_WebWindowType):
		page = WebEngineView(self)
		page.urlChanged.connect(self.on_url_changed)
	def on_url_changed(self,url):
		self.setUrl(url)

# 创建主程序
class ShoppingCentre(QMainWindow):
	def __init__(self):
		super().__init__()
		self.setWindowTitle("拼多多商城")
		self.setGeometry(690,10,600,1050)
		self.setFixedSize(600,1050)
		self.setWindowIcon(QIcon('images/pdd.ico'))
		self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.WindowMinimizeButtonHint|Qt.FramelessWindowHint)	

		# 添加导航栏到窗口中
		self.navigation_bar = self.addToolBar('工具栏')
		self.navigation_bar.setIconSize(QSize(18,18))

		# 添加前进、后退、停止加载和刷新的按钮
		self.back_button = QAction(QIcon('images/back.png'), 'Back(点击可往前)', self)
		self.next_button = QAction(QIcon('images/next.png'), 'Forward(下一页)', self)
		self.reload_button = QAction(QIcon('images/reload.png'), 'Reload(刷新)', self)

		# 将按钮添加到导航栏上
		self.navigation_bar.addAction(self.back_button)
		self.navigation_bar.addAction(self.next_button)
		self.navigation_bar.addAction(self.reload_button)

		# 设置浏览器
		webbrowser = WebEngineView()
		webbrowser.load(QUrl("https://mobile.yangkeduo.com"))
		self.setCentralWidget(webbrowser)

		# 设置链接
		self.reload_button.triggered.connect(webbrowser.reload)
		self.back_button.triggered.connect(webbrowser.back)
		self.next_button.triggered.connect(webbrowser.forward)

		self.show()

if __name__ == "__main__":
	import sys

	# 准备打开网站
	app = QApplication(sys.argv)
	win = ShoppingCentre()
	app.exec_()

增强用户体验

这个窗口总是在最前方,对于我们的程序来说并不是一件好事情,所以我们重新编辑一下程序,我们将这个设置窗口属性的代码注释掉,并且重新更改一下窗口大小
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
我们再设置一下窗口的快捷键
在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)
这样子,就感觉比之前更完美了一下,于是就收工吧

实例代码

# 程序名称 : ShoppingCentre
# 制作时间 : 2021年6月12日
# 运行环境 : Windows 10

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *

# 重写方法
class WebEngineView(QWebEngineView):
	def createWindow(self,QWebEnginePage_WebWindowType):
		page = WebEngineView(self)
		page.urlChanged.connect(self.on_url_changed)
	def on_url_changed(self,url):
		self.setUrl(url)

# 创建主程序
class ShoppingCentre(QMainWindow):
	def __init__(self):
		super().__init__()
		self.setWindowTitle("拼多多商城")
		self.setGeometry(690,35,600,1040)
		self.setFixedSize(600,1040)
		self.setWindowIcon(QIcon('images/pdd.ico'))
		#self.setWindowFlags(Qt.FramelessWindowHint) 

		# 添加导航栏到窗口中
		self.navigation_bar = self.addToolBar('菜单栏')
		self.navigation_bar.setMovable(True)
		self.navigation_bar.setIconSize(QSize(16,16))

		# 添加前进、后退、停止加载和刷新的按钮
		self.back_button = QAction(QIcon('images/back.png'), 'Back(点击可往前)', self)
		self.next_button = QAction(QIcon('images/next.png'), 'Forward(下一页)', self)
		self.reload_button = QAction(QIcon('images/reload.png'), 'Reload(刷新)', self)

		# 设置快捷键
		self.back_button.setShortcut('Ctrl+Shift+F')
		self.next_button.setShortcut('Ctrl+Shift+Z')
		self.reload_button.setShortcut('Ctrl+R')

		# 将按钮添加到导航栏上
		self.navigation_bar.addAction(self.back_button)
		self.navigation_bar.addAction(self.next_button)
		self.navigation_bar.addAction(self.reload_button)

		# 设置浏览器
		webbrowser = WebEngineView()
		self.setCentralWidget(webbrowser)
		webbrowser.load(QUrl("https://mobile.yangkeduo.com"))

		# 设置链接
		self.reload_button.triggered.connect(webbrowser.reload)
		self.back_button.triggered.connect(webbrowser.back)
		self.next_button.triggered.connect(webbrowser.forward)

		self.show()

if __name__ == "__main__":
	import sys

	# 准备打开网站
	app = QApplication(sys.argv)
	win = ShoppingCentre()
	app.exec_()

其实在这里我还是要说明为什么要在最后加上快捷键这个东西,是因为我发现,浏览器直接挡住了工具栏,让它不能继续访问,但是解决办法还是没有找到,不知道哪位大神可以帮忙解惑,感谢!

转载声明

本文首发至CSDN,如需转载,请附上原文链接:在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多))

上一篇:c#winform使用WebBrowser 大全


下一篇:$聊一聊"驼峰"和"下划线"——Python re.sub函数详细用法实例讲解