参考:勿在浮沙筑高台
pycharm+Anaconda2(python2.7)
cmd输入python可以看到python版本号,若输出错误。在环境变量PATH中加分号 ; 添加Anaconda中python.exe所在路径我所在的目录 D:\Anaconda;D:\Anaconda\Scrips
再次cmd输入python查看quit()退出。
py2exe选择对应版本:py2exe
1、创建Getimg.py
import re import urllib #网页操作模块 #获取网页内容 def getHtml(url): page=urllib.urlopen(url) #打开网址 html=page.read() #读取网页中的内容并存储在html return html #获取图片 def getImg(html): reg=r'//[\w]*\.?alicdn\.com[^"\']+\.jpg' #网页内容筛选 imgre=re.compile(reg) imglist=re.findall(imgre,html) #找到匹配待输入网页内容存储在imglist print(len(imglist)) x=1 for imgurl in imglist: print(imgurl) imgurl='https:'+imgurl #urlretrieve方法将url定位到的html文件下载到你本地的硬盘中。如果不指定filename,则会存为临时文件。urlretrieve()返回一个二元组(filename,mine_hdrs) urllib.urlretrieve(imgurl,'%s.jpg'%x) x+=1 #下载图片 def DownLoadImg(url): html=getHtml(url) getImg(html)
输入网址测试是否正确
2、界面设计
from Tkinter import * # Tk会调用操作系统提供的本地GUI接口 完成最终的GUI import tkMessageBox as mb # 从Frame派生一个Application类,这是所有Widget的父容器: class Application(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack(fill=X, padx=100) self.createWidgets() def createWidgets(self): self.nameInput = Entry(self) self.nameInput.pack(fill=X, pady=10) self.nameInput.pack(fill=X, padx=5) self.alertButton = Button(self, text=(' 请输入网址 '), command=self.FUN) self.alertButton.pack(fill=X, padx=30) self.alertButton.pack(fill=X, pady=10) def FUN(self): name = self.nameInput.get() or 'blank' if name == 'blank': mb.showinfo('Message', '网址不合法!') else: DownLoadImg(name) mb.showinfo('Message', '下载成功并保存!') app = Application() # 实例化Application app.master.title('淘宝网页图片爬取') # 对话框标题 app.mainloop() # 主消息循环
3、创建convert.py
import py2exe from distutils.core import setup setup(windows=[{"script": "Getimg.py"}])
4、生成exe打包文件
安装py2exe 选择默认环境 D:\Anaconda\Lib\site-packages 输入: python convert.py py2exe
显示以上内容即可生成两个文件夹,在dist文件下找到Getimg.exe 应用文件,点击打开输入淘宝网址即可在该文件下下载网页中的jpg图片。
1、电脑上安装了Anaconda2(python2.7.13)和Anaconda3(python3.6.1)两个版本由于python3版本所对应py2exe软件不匹配,难找,所以选择版本2的。
2、由python3改过来的代码主要是安装包名字不同以及所调用的成员函数不同,其他几乎一致。
3、改写代码以及调试过程中遇到各种问题,在网上有的搜不到,都不想弄了,但想想连个小问题都解决不了,那还是别当程序猿。