从EXPLOSM.net下载漫画脚本[Python]

Dev*_*ted 1 python scripting urllib download

所以我写了这个简短的脚本(正确的单词?)来下载来自explosm.net漫画的漫画图片,因为我最近发现了它并且我想...把它放在我的iPhone上...... 3G.

一切正常.urllib2用于获取网页html和urllib for image.retrieve()

为什么我在SO上发布了这个:我该如何优化这段代码?REGEX(正则表达式)会让它更快吗?这是互联网限制吗?算法不好......?

对速度或一般代码美学的任何改进都将非常感激"答案".

谢谢.

- - - - - - - - - - - - - - - - 码 - - - - - - - - - -----------------

import urllib, urllib2

def LinkConvert(string_link):
    for eachLetter in string_link:
        if eachLetter == " ":
            string_link = string_link[:string_link.find(eachLetter)] + "%20" + string_link[string_link.find(eachLetter)+1:]
    return string_link

start = 82
end = 1506

matchingStart = """<img alt="Cyanide and Happiness, a daily webcomic" src="http://www.explosm.net/db/files/Comics/"""
matchingEnd = """></"""
link = "http://www.explosm.net/comics/"

for pageNum in range(start,start+7):
    req = urllib2.Request(link+`pageNum`)
    response = urllib2.urlopen(req)
    page = response.read()

    istart1 = page.find(matchingStart)
    iend1 = page.find(matchingEnd, istart1)
    newString1 = page[istart1 : iend1]

    istart2 = newString1.find("src=")+4
    iend2 = len(newString1)
    final = newString1[istart2 +1 : iend2 -1]

    final = LinkConvert(final)
    try:
        image = urllib.URLopener()
        image.retrieve(final, `pageNum` + ".jpg")
    except:
        print "Uh-oh! " + `pageNum` + " was not downloaded!"

    print `pageNum` + " completed..."
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是Python 2.5代码,而不是3.0,但是你打赌我在新年之前或之后(大学应用之后 - YAY!^ - ^)大大研究和播放了PYthon 3.0的所有功能.

Mat*_*Mat 7

我建议使用Scrapy进行页面提取,使用Beautiful Soup进行解析.这将使您的代码更简单.

是否要更改适用于这些替代方案的现有代码取决于您.如果没有,那么正则表达式可能会稍微简化你的代码.我不确定它会对性能产生什么影响.