【问题标题】:python script for downloading all Ctrl+Alt+Del webcomics? [closed]用于下载所有 Ctrl+Alt+Del 网络漫画的 python 脚本? [关闭]
【发布时间】:2009-07-25 21:27:11
【问题描述】:

有人有吗?我试过 Comicdownloader 但这只能让我下载最新的漫画,而且我对 Python 的理解不够好,无法弄清楚如何更改它以下载所有漫画

【问题讨论】:

  • 我认为 cad 标签是用于计算机辅助设计的,而不是 Ctrl+Alt+Del 漫画 ;)
  • 请提供更多详细信息:漫画网站的 URL,以及您对 python 的了解程度。
  • 必须是python脚本吗?
  • 一定要Ctrl+Alt+Del吗?
  • thepiratebay mininova

标签: python download web-scraping


【解决方案1】:

嗯,它不是 python,方法也不是很优雅,但它会起作用。

简单查看ctrl+alt+del archive site后发现所有漫画都以jpg文件的形式存放在/comics/中。

有了这个假设,在 *nix 机器上的 shell 中运行以下命令将下载所有漫画。文件名显然是格式为 YYYYMMDD 的日期。

$ for filename in $(seq 20020101 20090726); do wget http://www.ctrlaltdel-online.com/comics/"$filename".jpg; done

哦,这可能需要一段时间:)。

【讨论】:

  • +1,因为 OP 在不接受您的回答的情况下将您的解决方案归功于您。
  • 你可以使用 curl:curl http://ctrlaltdel-online.com/comics[20020101..20090726].jpg 这样做的好处是只与服务器建立一个连接,而你的解决方案可能会被阻止并被视为垃圾邮件蜘蛛。 man curl 了解更多详情。
  • daloliogm:我直接尝试了您的解决方案,但出现错误。然后我用“-”(正如它在 man 中所说的那样)而不是“..”来尝试它,这只会为我获取很多 HTML(我猜是 index.html)。不过,您对垃圾邮件蜘蛛的看法可能是对的。
【解决方案2】:

嗯,有几种方法。您可以查看漫画图像本身的 url,看看它们是否遵循模式,编写一个小脚本来生成与模式匹配的 url,然后简单地使用 wget 或类似的东西来下载它们。要学习必要的python,我推荐python tutorial。专门研究组合字符串、字符串格式、字符串操作的方法,以便您可以从组件字符串、数字等构建您的 URL。这类项目可能是学习 python 的一个很好的借口,它可能会在未来帮助你做其他事情。 (而且很有趣!)

另外,我想人们以前也这样做过 - 几乎可以肯定,那里有应用程序可以做你想做的事,给定图像的 url,或者只是 url 的模式。看看四周。

你可以写信给漫画的作者,询问他们是否可以以某种方式批量购买,可能是购买,也可能是一本书。我想 ctrl-alt-del 很受欢迎,可以简单地吸收您下载整个存档所增加的负载,但较小的网站可能不会欣赏它 - 尽管我认为它们不会真正阻止您或任何事情。

至于你的问题,这个网站应该帮助你解决编程问题,帮助你解决你遇到的问题,一路轻推你——但如果你要求他们只写你的代码,大多数人不会感激为你。学点python,自己试试,遇到问题再问。

【讨论】:

    【解决方案3】:

    我将 urllib 与修改后的用户代理(因为 Timmy 阻止了原始用户代理)和 BeautifulSoup 一起使用。 无论如何,这是日期生成器:

    t1 = datetime.date(2002, 10, 22)
    t2 = datetime.date.today()
    while t2 > t1:
        t1 = t1 + datetime.date.resolution
        toon = t1.strftime("%Y%m%d")
        url1 = str(toon)
        main(url1)
    

    我的 main(): 看起来像这样(去掉了“检查文件是否存在”部分)

    def main(url):
        con = httplib.HTTPConnection("www.cad-comic.com")
        con.request("GET", "/cad/" + url)
        r1 = con.getresponse()
        soup = BeautifulSoup(r1)
        img = soup.findAll("img")[1]
        nImg = str(img)
        imgSplit = re.split('"', nImg)
        imgUrl = imgSplit[1]
        if imgUrl.startswith('http://www.cad-comic.com/comics/'):
            MeOpans().retrieve(imgUrl, url + ".jpg")
            print "Downloaded " + url
    

    “MeOpans()”看起来像这样:

    class MeOpans(urllib.URLopener):
        version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
    

    【讨论】:

    • 如果内容所有者屏蔽了您的用户代理,可能是因为他不想让您抓取他的内容....
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 2010-09-28
    • 2011-05-13
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多