5

在我的本地 Windows 机器上,我如何编写脚本来每天下载漫画并将其通过电子邮件发送给自己?

比如
http://comics.com/peanuts/

更新:我知道如何将图像下载为文件。困难的部分是如何从我的本地 Windows 机器通过电子邮件发送它。

4

6 回答 6

8

这取决于您想要的精确度。下载整个网页不会太具有挑战性 - 使用 wget,正如 Earwicker 上面提到的那样。

如果你想下载漫画的实际图像文件,你的武器库中需要更多。在 Python 中——因为这是我最了解的——我想你需要使用 urllib 来访问页面,然后使用正则表达式来识别页面的正确部分。因此,您需要知道页面的确切布局和图像的绝对 URL。

例如,对于 XKCD,以下工作:

#!/usr/bin/env python

import re, urllib

root_url = 'http://xkcd.com/'
img_url  = r'http://imgs.xkcd.com/comics/'

dl_dir   = '/path/to/download/directory/'

# Open the page URL and identify comic image URL
page  = urllib.urlopen(root_url).read()
comic = re.match(r'%s[\w]+?\.(png|jpg)' % img_url, page)

# Generate the filename
fname = re.sub(img_url, '', comic)

# Download the image to the specified download directory
try:
    image = urllib.urlretrieve(comic, '%s%s' % (dl_dir, fname))
except ContentTooShortError:
    print 'Download interrupted.'
else:
    print 'Download successful.'

然后,您可以通过电子邮件发送它,但您感觉很舒服。

于 2009-05-26T10:36:14.917 回答
3

快速浏览一下 google 会发现两个命令行程序,您应该能够将它们组合成一个批处理文件或使用您选择的脚本语言。

http://www.gnu.org/software/wget/ - 下载

http://www.beyondlogic.org/solutions/cmdlinemail/cmdlinemail.htm - 发送电子邮件

您可以使用控制面板中的 Windows 任务计划程序使其每天运行。

如果您使用 Python,肯定会有方便的库来进行下载/发送电子邮件 - 浏览 Python 官方网站。

于 2009-05-26T08:43:31.693 回答
2

在 RSS 提要上配置 feedburner,自己订阅电子邮件警报?

于 2009-05-26T10:56:17.480 回答
1

这可能是您到达目标的最短距离。

这并不简单……您需要弄清楚如何解析图像,而花生示例似乎是一个不可预测的 URI,因此获取图像本身可能比看起来更困难。您最好的选择是读取远程网页的 HTML,编写一个正则表达式来解析图像 url。然后邮件功能将正常工作,通过将 mail() 函数中的标题设置为以下内容来发送 HTML 电子邮件:

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html;";
$headers .= " charset=iso-8859-1\r\n";

使用邮件中的图像标签。这将让您收到所有连环画一个接一个放置的电子邮件。您的电子邮件软件会执行 HTTP 请求来为您下载图像,因此您可以避免直接附加图像。

于 2009-05-26T09:36:28.437 回答
1

通过电子邮件发送它很容易。选择您喜欢的语言的库并阅读文档。通过您的常规电子邮件帐户发送,或为其创建一个新的免费 G​​Mail 帐户。

不过,有时附件确实很棘手。如果不出意外,请使用您最喜欢的任何库来试一试,然后就您遇到的任何问题发布另一个具体问题。

于 2009-05-26T17:02:32.233 回答
1

如果您已经知道如何下载文件,这非常简单。下载后,创建一个通过电子邮件将其发送给自己的 cronjob。

使用 phpmailer 之类的东西是通过电子邮件发送它的最简单方法

http://phpmailer.codeworxtech.com/index.php?pg=examplebmail

于 2009-05-27T04:50:41.473 回答