拼多多现在也是越来越火了,但是不知道大家有没有发现,拼多多似乎一直不能通过网页进行访问。淘宝,京东都有微信客户端,那么怎么拼多多就没有呢?带着这个疑问,我特地去手机爬取了一下拼多多的客户端。(其实也不能说是爬取吧,就是随便玩玩!)
文章目录
拼多多的域名…
事情是这样的,当时呢,我看中了一款洗手液…
于是我点击了一下复制链接,就像这样
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
吗?
结果,当我将这个链接复制到浏览器中运行,发现的确是真的!
不会吧,难道我使用的拼多多一直都是盗版的?
于是我来了一波域名查询,发现竟是
阿里云注册的,应该不会是什么小网站,但是所有者我们还是不知道啊,所以我去到了爱企查进行进一步的查询
在上海寻梦科技下方,终于发现了这一行域名
好吧,在浏览的时候,我还发现了另一个拼多多域名,http://yiqixiegushi.com/
,于是我就想着,要不我做一个程序,这样在网上就可以抢拼多多商品了
程序构思
基础窗口
于是我就开始了,这显然是一个网页页面,我们有很多种选择,在这里,我们选择了PyQt库进行操作,于是便开始了编代码…
首先呢,我们先来创建一个购物中心的类,然后我们将创建一个无边框的窗口,并显示在主页面上。
# 程序名称 : 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_()
接下来我们将设置这个窗口的大小,并固定大小,所以我们来搜索一下手机的长宽比例一般是多少,并参照一下模拟器的长宽值
所以说宽度一般是600,高度一般是1100左右,并设置出现位置在屏幕*,也就是电脑屏幕的宽度减去我们窗口宽度,然后除二的值,在我这里呢,是(1980-600)/2 也就是690
经过我的测试,发现屏幕在600和1050这个比值中是最合适的,然后锁定我们的长和宽,接下来,我们去官网爬取图片,设置图标
拼接地址,得到最终图标,并保存https://www.pinduoduo.com/homeFavicon.ico
我们可以看到,我们成功设置了图标(注意,最终图片的命名是以从网站下载下来命名后的文件)
# 程序名称 : 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_()
实现浏览器
首先我们先重写一下方法,实现网页跳转
然后将这个浏览器添加进设置中
运行程序,我们可以发现,页面已经可以正常显示了
可是我们会发现,我们没有按钮,我们只能右键点击操作后退或者前进,这实在是太麻烦了
那么我们设置一个状态栏进行操作程序,这里我们就需要自行找图标,我这里使用的呢,是阿里巴巴图标库提供的图标
我们在代码中添加工具栏,然后设置图标大小
添加图片,并将其添加到状态栏上面
最后绑定事件,我们就成功制作了这个程序了
再次使用我们会发现整个用户体验加强了
# 程序名称 : 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_()
增强用户体验
这个窗口总是在最前方,对于我们的程序来说并不是一件好事情,所以我们重新编辑一下程序,我们将这个设置窗口属性的代码注释掉,并且重新更改一下窗口大小
我们再设置一下窗口的快捷键
这样子,就感觉比之前更完美了一下,于是就收工吧
实例代码
# 程序名称 : 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制作电脑的手机版拼多多))