python模拟天猫商城
使用python爬虫,对天猫商品详细信息进行获取
下面是在代码中所使用的模块
requests模块进行网址的请求
lxml中的etree进行数据的获取
urllib中的request.urlretrieve进行商品图片的下载,prase进行编码
tkinter进行用户交互
time模块进行时间的延迟
pygame 用来显示图片
webbrowser用于弹出指定网页
PIL模块可以将.png .gif 转换成tkinter专用的.jpg(此程序中形如废柴,没有用到)
最终结果如下
python模拟天猫商城
使用tkinter的交互界面,我们可以看到,可以查看下一个商品,商品价格,月销量,评价数,同时也可以弹出该商品的该买链接
商品图片如下
首先,我们需要天猫商城的首页url
首页网址:https://www.tmall.com/
当我们输入需要搜索的内容,网址会发生变化:
https://list.tmall.com/search_product.htm?q=%C0%F1%CE%EF&type=p&vmarket=&spm=875.7931836%2FB.a2227oh.d100&from=mallfp…pc_1_searchbutton
C0%F1%CE%EF这串字符是将礼物进行编码得到的,因此,我们需要将汉字进行编码,写入url中
编码代码如下:
def get_url():name = number1.get()data = {}data['name'] = nameresp = parse.urlencode(data)name_urlcode = resp[5:]url = 'https://list.tmall.com/search_product.htm?q=' + str(name_urlcode) + '&type=p&vmarket=&spm=875.7931836%2FB.a2227oh.d100&from=mallfp..pc_1_searchbutton'
接下来就是爬虫了,我们需要将转换的url进行解析,解析代码如下:
def get_HTML(url):# print("正在请求:",url)response = requests.get(url)text = response.content.decode('gbk')html = etree.HTML(text)return html
可以返回网页中的html
下一步,就是获取该网页的数据,并每个数据保存在一个字典中,保存在数组中。
代码如下:
#获取页面内的详细信息,包括商品名称,商品价格,商品链接,商品月销量,商品评价数的详细信息
def get_detials(url):html = get_HTML(url)#使用xpath提取数据#获取URLevery_urls = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/p[2]/a/@href')#获取商品名称commodity_name = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/p[2]/a/@title')#获取商品价格commodity_price = html.xpath('//div[@id = "J_ItemList"]/div/div/p[1]/em/@title')#商品月销量commodity_number = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/p[3]/span/em/text()')#商品评价数commodity_Evaluation = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/p[3]/span[2]/a/text()')commodity_shop_name = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/div[3]/a//text()')#商品图片commodity_picture_url_src = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/div[1]//img/@src')commodity_picture_url_data = html.xpath('//div[@id = "J_ItemList"]/div/div[1]/div[1]//img/@data-ks-lazyload')#将商品图片的url存入一个数组中commodity_picture_url = []for number in commodity_picture_url_src:commodity_picture_url.append(number)for number in commodity_picture_url_data:commodity_picture_url.append(number)#储存所有数据的数组file_new_commodity = []#获取每一个数据for each in range(len(every_urls)):try:new_commodity = {}every_url = 'https:' + every_urls[each]new_commodity["商品名称"] = commodity_name[each].strip()new_commodity["商品链接网址"] = every_url# new_commodity["商品店名"] = str(commodity_shop_name[4*each+2]).strip()new_commodity["商品价格"] = str(commodity_price[each])+'元'new_commodity["商品月销量"] = str(commodity_number[each])new_commodity["商品评价数"] = str(commodity_Evaluation[each])picturl_url = 'http:' + commodity_picture_url[each]new_commodity["商品图片网址"] = picturl_urlfile_new_commodity.append(new_commodity)except:passreturn file_new_commodity
将所有数据返回
下一步,就是,将数据显示在tkinter中,我们可以很清晰的了解每个商品的详细信息,包括价格,商品链接,以及月销量
代码如下;
#创建tkinter显示
def get_Tkinter():master = tkinter.Tk()master.title('天猫')frame = tkinter.Frame(master)frame.pack(padx = 10,pady = 20)#初始化数据number1 = tkinter.StringVar()number2 = tkinter.StringVar()number3 = tkinter.StringVar()number4 = tkinter.StringVar()number5 = tkinter.StringVar()number6 = tkinter.StringVar()number7 = tkinter.StringVar()#显示表头tkinter.Label(frame,text = "你需要搜索的商品:").grid(row = 0,column = 0,sticky=tkinter.E)tkinter.Label(frame,text="商品名称:").grid(row=2, column=0,sticky=tkinter.E)tkinter.Label(frame, text="商品链接网址:").grid(row=3, column=0,sticky=tkinter.E)tkinter.Label(frame, text="商品店名:").grid(row=4, column=0,sticky=tkinter.E)tkinter.Label(frame, text="商品价格:").grid(row=5, column=0,sticky=tkinter.E)tkinter.Label(frame, text="商品月销量:").grid(row=6, column=0,sticky=tkinter.E)tkinter.Label(frame, text="商品评价数:").grid(row=7, column=0,sticky=tkinter.E)#在上面输入需要搜索的内容tkinter.Entry(frame, textvariable = number1,width = 50).grid(row=0, column=1)#清空def zero():number2.set('')number3.set('')number4.set('')number5.set('')number6.set('')number7.set('')url_text =[]url_picturre= []#当按下下一个按钮时,进行数据的刷新def show_next(numb = [0]):if numb[0] < len(news):num = numb[0]numb[0] = numb[0]+1every = news[num]#将数据显示在tkinternumber2.set(every['商品名称'])number3.set(every['商品链接网址'])# number4.set(every['商品店名'])number5.set(every['商品价格'])number6.set(every['商品月销量'])number7.set(every['商品评价数'])url_text.append(every['商品链接网址'])url_picturre.append(every['商品图片网址'])request.urlretrieve(url_picturre[0], '0.png')url_picturre.pop()#调用显示图片的tinterpicture_display()#当商品中所有数据显示完之后,重新归零else :numb[0] = 0#弹出所在网页def show_url():time.sleep(0.5)webbrowser.open(url_text[-1])#显示按钮tkinter.Button(frame, text="搜索", width=10, command=get_url).grid(row=1, column=2, padx=10, pady=10)tkinter.Button(frame, text="清空", width=10, command=zero).grid(row=1, column=0, padx=10, pady=10)tkinter.Button(frame, text="刷新", width=10,command = show_next).grid(row=1, column=1, padx=10, pady=10)#显示商品信息框tkinter.Entry(frame, textvariable=number2, width=50, state="readonly").grid(row=2, column=1)tkinter.Entry(frame, textvariable=number3, width=50, state="readonly").grid(row=3, column=1)tkinter.Entry(frame, textvariable=number4, width=50, state="readonly").grid(row=4, column=1)tkinter.Entry(frame, textvariable=number5, width=50, state="readonly").grid(row=5, column=1)tkinter.Entry(frame, textvariable=number6, width=50, state="readonly").grid(row=6, column=1)tkinter.Entry(frame, textvariable=number7, width=50, state="readonly").grid(row=7, column=1)#显示商品信息之后的按钮框tkinter.Button(frame, text="退出", width=10,command = master.quit).grid(row=8, column=0, padx=10, pady=10)tkinter.Button(frame, text="弹出天猫页面", width=10,command = show_url).grid(row=8, column=1, padx=10, pady=10)tkinter.Button(frame, text="下一个", width=10,command = show_next).grid(row=8, column=2, padx=10, pady=10)tkinter.mainloop()picture()
下一步就是弹出图片的模块
代码如下:
#在pygame显示图片
def picture_display():# 初始化pygame.init()# 界面高度与宽度size = width, height = 800, 500# 移动速度bg = (255, 255, 255)# 创建指定大小的窗口screen = pygame.display.set_mode(size)# 设置窗口标题pygame.display.set_caption("商品图片")# 加载图片turtle = pygame.image.load("0.png")# 获取图像的位置矩形position = turtle.get_rect()# 填充背景screen.fill(bg)# 更新图像screen.blit(turtle, position)# 更新界面pygame.display.flip()# 延迟pygame.time.delay(10)
在tkinter中,并且有弹出天猫页面,我们可以详细的查看商品的具体信息
def show_url():time.sleep(0.5)webbrowser.open(url_text[-1])
图片如下:
逛天猫商城无非就是这几个步骤,感谢收看,如有错误,望指正。
python模拟天猫商城相关推荐
- idea中ssm集成freemark_基于SSM框架的迷你天猫商城
作者:TMall来源:https://gitee.com/project_team/Tmall_demo 迷你天猫商城 迷你天猫商城是一个基于SSM框架的综合性B2C电商平台,需求设计主要参考天猫商城 ...
- 基于springboot的仿天猫商城
基于springboot的仿天猫商城 简介 迷你天猫商城是一个基于SSM框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认 ...
- 基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven)
基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven) 一.项目介绍: 迷你天猫商城是一个基于SSM框架的综合性B2C电商平 ...
- 基于javaweb的仿天猫商城系统(java+jsp+springboot+ssm+mysql)
基于javaweb的仿天猫商城系统(java+jsp+springboot+ssm+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/s ...
- 天猫商城自动化python脚本(仅供初学者学习使用)
作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络攻防 ...
- 爬虫项目八:Python对天猫商品数据、评论数据爬取
文章目录 前言 一.商品数据 1.分析url 2.登录账号 3.解析数据 4.模拟滑动滑块 二.评论数据 1.分析url 2.解析数据 前言 天猫商城商品数据.评论数据爬取 提示:以下是本篇文章正文内 ...
- python模拟购物车购物过程_Python 模拟购物车的实例讲解
1.功能简介 此程序模拟用户登陆商城后购买商品操作.可实现用户登陆.商品购买.历史消费记查询.余额和消费信息更新等功能.首次登陆输入初始账户资金,后续登陆则从文件获取上次消费后的余额,每次购买商品后会 ...
- python鲜花水果商城毕业设计开题报告
本文给出的python毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:伴随着互联网技术的不断发展和完善,在人们的生活和工作的各个方面,互联网都有着非常重大 ...
- python模拟网页点击_python模拟点击
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...
最新文章
- java之php、Android、JAVA、C# 3DES加密解密
- cisco路由器ios升级(rommon下)
- ArrayList add(int index,E element)
- Java遍历指定文件夹,在屏幕打印所有以abc结尾的文件
- QT的QHostInfo类的使用
- c++ string类 知识点整理
- Java架构师面试题系列之Dubbo面试专题(29题,含详细答案解析)
- Matlab基础教程—【10】Matlab符号运算
- 网络逻辑漏洞、SQLMAP、Nmap及其它命令的使用方法
- 来势汹汹,奥米克戎;是否补种,特定疫苗? | 经济学人全球早报精选
- CMD执行SQL文件 SQL SERVER数据库
- 在Markdown文档中插入数学公式
- SQL server卸载软件(可修复注册表)
- Beta阶段敏捷冲刺前准备
- Just do it and never give up,then you will find that things become better
- mysql list dbs_php mysql_list_dbs()函数用法示例
- 使用bat脚本运行jar程序 cmd下解决乱码问题
- 初探数通网络开放可编程简介
- jpa、mybatis、hibernate、spring data jpa区别
- netstat输出中Established时Recv-Q的含义
热门文章
- 软件测试人员应该怎样做好需求分析
- 到哪里去学习人工智能?怎么学AI?
- c语言中ntdll.dll,在Win32环境中从ntdll.dll调用Nt函数,C
- word涂改涂掉图片_Word对图形照片处理的几个小技巧,很少人知道!
- 丰乳细臀——读《丰乳肥臀》
- RfDNet 在Ubuntu16下的配置与运行——(二)数据准备与训练
- 做了个“飞行棋”小游戏
- [轉]CDONTS.NewMail发邮件-详细篇
- Android UI开源软件(三)
- 【读书笔记 | 自动驾驶中的雷达信号处理(第7章 目标滤波与跟踪)】