`
yy_gy
  • 浏览: 34463 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

Google python logpuzzle.py (python 2.7)

阅读更多
#!/usr/bin/python
import os
import re
import sys
import urllib

"""Logpuzzle exercise
Given an apache logfile, find the puzzle urls and download the images.

Here's what a puzzle url looks like:
10.254.254.28 - - [06/Aug/2007:00:13:48 -0700] "GET /~foo/puzzle-bar-aaab.jpg HTTP/1.0" 302 528 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
"""

def read_urls(filename):
  """Returns a list of the puzzle urls from the given log file,
  extracting the hostname from the filename itself.
  Screens out duplicate urls and returns the urls sorted into
  increasing order."""
  hostname=os.path.basename(filename)[os.path.basename(filename).index('_')+1:]
  cont=open(filename).read()
  all_urls=re.findall(r'GET (\S+)',cont)
  urls=[]
  for url in all_urls:
    if 'images/puzzle' in url and 'http://'+hostname+'/'+url not in urls:
      urls.append('http://'+hostname+'/'+url)

  return sorted(urls)

def download_images(img_urls, dest_dir):
  """Given the urls already in the correct order, downloads
  each image into the given directory.
  Gives the images local filenames img0, img1, and so on.
  Creates an index.html in the directory
  with an img tag to show each local image file.
  Creates the directory if necessary.
  """
  f=open(os.path.join(dest_dir,'index.html'),'w')
  f.write('<html><body>')
  temp=0
  for url in img_urls:
    image=urllib.urlretrieve(url,os.path.join(dest_dir,'img'+str(temp)+'.jpg'))
   f.write('<img src='+os.path.join(dest_dir,'img'+str(temp))+'.jpg>')
    temp=temp+1
  f.write('</body></html>')
  f.close()

def main():
  args = sys.argv[1:]

  if not args:
    print 'usage: [--todir dir] logfile '
    sys.exit(1)

  todir = ''
  if args[0] == '--todir':
    todir = args[1]
    del args[0:2]

  img_urls = read_urls(args[0])

  if todir:
    download_images(img_urls, todir)
  else:
    print '\n'.join(img_urls)

if __name__ == '__main__':
  main()
分享到:
评论

相关推荐

    get-pip2.7.py

    pip安装,用于已有python2.7,但没有pip的情况下,下载后直接python get-pip2.7.py即可自动安装pip

    MySQL-python-1.2.3.win32-py2.7.msi

    MySQL-python-1.2.3.win32-py2.7.msi

    python安装32位的 PIL-1.1.7.win32-py2.7.exe

    标题中的"PIL-1.1.7.win32-py2.7.exe"是指Python Imaging Library(PIL)的一个特定版本,适用于32位Windows操作系统,并且与Python 2.7版本兼容。PIL是Python中用于图像处理的库,提供了丰富的图像处理功能,包括...

    MySQL-python-1.2.3.win32-py2.7 MySQL-python-1.2.3.win-amd64-py2.7

    这个压缩包包含了两个版本的MySQL-python安装程序:一个适用于32位系统(MySQL-python-1.2.3.win32-py2.7.exe),另一个适用于64位系统(MySQL-python-1.2.3.win-amd64-py2.7.exe)。这两个文件都是为Python 2.7版本...

    Python 删除.py文件

    Python 删除.py文件Python 删除.py文件Python 删除.py文件

    python官方2.7.amd64版本msi安装包

    Python 2.7是Python编程语言的一个重要版本,特别是在它发布的时候,它是广泛使用的版本之一。这个AMD64.msi安装包是专为64位Windows操作系统设计的,确保在这些系统上无缝运行Python解释器及其相关的库和工具。...

    Python-2.7.x-win64-开发扩展包

    收集了很久的Window64位Python扩展包,是python的开发必备,列表如下,pycrypto-2.6.win64-py2.7\pywin32-216.win64-py2.7\PyYAML-3.10.win64-py2.7\pyzmq-2.1.11.win64-py2.7\MySQL-python-1.2.3.win64-py2.7\...

    Python库 | hyperlambda-0.0.2-py2.7.egg

    **Python库:Hyperlambda-0.0.2-py2.7.egg** Hyperlambda是Python编程语言中的一款开源库,主要用于简化复杂的数据处理和配置管理任务。在Python的生态系统中,库扮演着至关重要的角色,它们扩展了Python的功能,...

    Python+MySQL-python-1.2.3.win32-py2.7.msi+setuptools-0.6c11.win32-py2.7.exe

    包含Python MySQL-python-1.2.3.win32-py2.7.msi setuptools-0.6c11.win32-py2.7.exe chromedriver_win_23.0.1240.0.zip IEDriverServer_Win32_2.25.3.zip

    pandas-0.10.1.win32-py2.7.exe

    pandas-0.10.1.win32-py2.7.exe pandas-0.10.1.win32-py2.7.exe pandas-0.10.1.win32-py2.7.exe pandas-0.10.1.win32-py2.7.exe pandas-0.10.1.win32-py2.7.exe pandas-0.10.1.win32-py2.7.exe pandas-0.10.1.win32-...

    pandas-0.10.0.win32-py2.7.exe

    pandas-0.10.0.win32-py2.7.exe pandas-0.10.0.win32-py2.7.exe pandas-0.10.0.win32-py2.7.exe pandas-0.10.0.win32-py2.7.exe pandas-0.10.0.win32-py2.7.exe pandas-0.10.0.win32-py2.7.exe pandas-0.10.0.win32-...

    scipy-0.15.1-win32-superpack-python2.7.exe

    这个名为"scipy-0.15.1-win32-superpack-python2.7.exe"的文件是一个专门为Windows 32位操作系统设计的安装包,适用于Python 2.7版本。此安装包包含了Scipy库的完整集合,旨在简化用户在该平台上的安装过程。 Scipy...

    python-dateutil-2.2.win32-py2.7.exe

    python-dateutil-2.2.win32-py2.7.exe,python-dateutil-2.2.win32-py2.7.exe

    libpython2.7.so.1

    标题中的"libpython2.7.so.1"是一个动态链接库文件,它是Python 2.7版本的核心库在Linux系统中的实现。动态链接库(Dynamic Link Library)是Linux系统中的一种共享对象,允许多个程序同时使用同一份代码,节省内存...

    scipy-0.16.1-win32-superpack-python2.7.exe

    scipy-0.16.1-win32-superpack-python2.7.exe 适合python2.7 直接点击运行安装即可。

    py2exe-0.6.9.win32-py2.7.zip

    python转exe工具 -- python2.7版本的py2exe软件,可以将python转化为exe可执行文件。 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows...

    Python2.7.13150和pyinstaller-develop.zip

    Python 2.7.13150 是 Python 语言的一个特定版本,发布于2016年,是Python 2.x系列中的一个重要版本。它包含了许多改进和修复,为开发者提供了更稳定和高效的编程环境。这个版本在当时是Python 2的最新更新,但请...

    py2exe-0.6.9.win64-py2.7.amd64.exe

    "py2exe-0.6.9.win64-py2.7.amd64.exe" 是一个专门用于将Python脚本转换为Windows可执行文件(.exe)的工具包,适用于64位Python 2.7环境。Py2exe是Python社区广泛使用的第三方库,它简化了将Python应用程序打包成...

    pandas-0.10.1.win-amd64-py2.7.exe

    pandas-0.10.1.win-amd64-py2.7.exe pandas-0.10.1.win-amd64-py2.7.exe pandas-0.10.1.win-amd64-py2.7.exe pandas-0.10.1.win-amd64-py2.7.exe pandas-0.10.1.win-amd64-py2.7.exe pandas-0.10.1.win-amd64-py2.7....

    python27.dll

    Python2.7.dll是Python编程语言在Windows 7操作系统中的一个关键动态链接库(Dynamic Link Library,DLL)文件。DLL文件是Windows系统中用于存储可重用代码和数据的库,它们允许多个程序同时访问同一功能,从而节省...

Global site tag (gtag.js) - Google Analytics