基于python做的抓图程序1.0.00版本
#coding=gbk
import urllib
import urllib2
import re
import os
import time
# import readline
def getHtml(url):
#一些网站限制浏览器访问,python模拟浏览器
heads = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset':'GB2312,utf-8;q=0.7,*;q=0.7',
'Accept-Language':'zh-cn,zh;q=0.5',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Host':'John',
'Keep-Alive':'115',
'Referer':url,
'User-Agent':'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.14) Gecko/20110221 Ubuntu/10.10 (maverick) Firefox/3.6.14'}
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
urllib2.install_opener(opener)
req = urllib2.Request(url)
opener.addheaders = heads.items()
respHtml = opener.open(req).read()
# return respHtml.decode('gbk').encode('utf-8')
return respHtml
def getImg(html):
# reg = r'input src=\'*(.*?\.jpg)'
reg = r'src="(.+?\.jpg)"'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
# print(imglist)
# return 1
x = 0
#生成临时目录存储
createDir = 'getpic'+time.strftime('%Y%m%d%H%M%S')
if not os.path.isdir(createDir) and not os.path.isfile(createDir):
os.mkdir(createDir)
# print(os.getcwd())
os.chdir(createDir)
# print(os.getcwd())
for imgurl in imglist:
print("正在抓取图片:"+imgurl)
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x+=1
# readline.parse_and_bind("control-v: paste")
website = raw_input("please input website:")
html = getHtml(website)
# print(html)
getImg(html)
最近学习python,参考网上的资料做了抓图程序,目前还有以下几点要完善
1. 如何支持界面输入,比如支持多个 选项,输入多个url
2. 支持匹配列表,发现有些网站的匹配规则不一致,导致不能通用
3. winpython不支持readline模块,导致py2exe生成的cmd窗口需要设置后,才能粘贴网址
如果使用py2exe生成一个通用的exe文件
在工作目录创建文件 create.py,内容如下
from py2exe.build_exe import py2exe
from distutils.core import setup
from glob import glob
import py2exe
import os, sys
import shutil
if len(sys.argv) == 1:
sys.argv.append("py2exe")
includes = ["encodings", "encodings.*"]
options = {"py2exe":
{ "compressed": 1,
"optimize": 2,
"includes": includes,
"dist_dir": "bin",
"bundle_files": 1
}
}
setup(
version = "1.0",
description = u'To grab pictures',
name = "grabpic1.0.00",
options = options,
zipfile = None,
console=[{"script": "grabpic1.0.00.py"}],
data_files=[]
)
os.remove("bin//w9xpopen.exe")
# shutil.rmtree("build")
使用命令python create.py py2exe ,生成文件后,在bin/grabpic1.0.00.exe
运行grabpic1.0.00.exe ,右键设置 看到中间有个插入模式,勾选,然后cmd窗口就可以贴图了。
PS:第一次写,不知道如何贴图,悲催
参考帖子:
http://blog.csdn.net/txg703003659/article/details/30459475
http://blog.csdn.net/linda1000/article/details/12909439
基于python做的抓图程序1.0.00版本的更多相关文章
- 一个基于python的即时通信程序
5月17日更新: 广播信息.用户列表.信息确认列表以及通信信息,从原来的用字符串存储改为使用字典来存储,使代码更清晰,更容易扩展,具体更改的格式如下: 广播信息(上线): { 'status': 信息 ...
- 基于python的图片修复程序-可用于水印去除
图片修复程序-可用于水印去除 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以 ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
- 每日一帖示例程序(使用TWebBrowser基于HTML做)
最近在程序中增加了每日一帖的功能,搜索一下网站的程序,发现大部分是用Memo实现,而我用的是TWebBrowser基于HTML做,故帖出来共享一下. PAS源码: unit Unit1; interf ...
- 接口自动化 [授客]基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishou ...
- What exactly can you do with Python? Here are Python’s 3 main applications._你能用Python做什么?下面是Python的3个主要应用程序。
原文链接 Github地址 一.陈述 1,我到底能用Python做什么? 我观察注意到Python三个主要流行的应用: 网站开发: 数据科学——包括机器学习,数据分析和数据可视化: 做脚本语言. 二. ...
- Python爬取《你好李焕英》豆瓣短评并基于SnowNLP做情感分析
爬取过程在这里: Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图 本文基于前文爬取生成的douban.txt,基于SnowNLP做情感分析. 依赖库: 豆瓣镜像比较快: ...
- 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架[V2.0改进版]
基于python+Testlink+Jenkins实现的接口自动化测试框架[V2.0改进版] by:授客 QQ:1033553122 由于篇幅问题,,暂且采用网盘分享的形式: 下载地址: [授客] ...
- 从0开始学正则表达式-基于python
关于正则表达式,当我们了解它就不难,不了解就很难,其实任何事情都是这样,没有人一生下来就啥都会,说白了,每个人都是一个学习了解进步的过程.学习和掌握正则表达式可能并不是太简单,因为它确实是有点像“外星 ...
随机推荐
- 【转】PyDev for Eclipse 简介
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/index.html PyDev for Eclipse 是一 ...
- Java编程性能优化一
转自:http://my.oschina.net/xianggao/blog/77224 在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著 ...
- Java如何等待子线程执行结束
工作中往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了. 一个线程启动之后, 是异步的去执行需要执行的内容的, 不会影响主线 ...
- 英文Ubantu系统安装中文输入法
以前都是安装的中文Ubantu,但是有时候用命令行的时候中文识别不好,会出现错误,所以这次安装了英文版,但是安装后发现输入法不好用,于是就要自己安装输入法. 安装环境为Ubantu13.04 1.卸载 ...
- [Javascript] delete keyword
delete keyword doesn't actually delete the value but just the reference. var me = { name: { first: & ...
- c++使用mysql的api连接相关问题
记录一下自己使用中的相关问题,方便有相同问题的同学解决. 关于在VS中的各种配置.看这里.只是须要注意一下,我如今用的mysql版本号是5.6的,已经没有[MySQL Server \lib\opt] ...
- python 用pdb调试
简单调试 Python 程序 在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py): $ vi d.py ...
- cocos2dx 2.14使用UUID
1首先要清楚objective-c 与c/ c++混编的规则 关于c/c++/obj-c的混合使用 1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj ...
- android开发之PreferenceScreen使用详解
是在惭愧,学习android也有一段时间了,今天才是第一次接触PreferenceScreen.记录下来,与大家分享. 本文参考:http://lovezhou.iteye.com/blog/1020 ...
- Java基础知识强化之IO流笔记28:BufferedOutputStream / BufferedInputStream(字节缓冲区流) 之BufferedOutputStream写出数据
1. BufferedOutputStream / BufferedInputStream(字节缓冲区流)的概述 通过定义数组的方式确实比以前一次读取一个字节的方式快很多,所以,看来有一个缓冲区还是非 ...