#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