Skip to main content
 首页 » 编程设计

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

2025年05月04日9soundcode

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

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

为什么我在 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..." 

顺便说一句,这是 Python 2.5 代码,而不是 3.0,但你敢打赌,我在新年前或新年后(在大学应用程序之后 - 耶!^- ^)

请您参考如下方法:

我建议使用 Scrapy为您的页面获取和Beautiful Soup用于解析。这将使您的代码更简单。

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