创世神域

Nothing is impossible.

@Puteulanus4年前

11/28
19:46
学习心得

抓取多看每日免费书籍的相关信息

那天看到V2EX上推荐一本限免的Linux相关的书籍,跑去收了之后想到做这个。免费的书收太多会把好书淹没在里面,反而不会去看了,而且每天跑去收也麻烦。既然如此,那干脆做个程序每天抓取免费书籍的信息然后发自己邮件好了,喜欢的话就就去多看收,不喜欢的话就不管了。

<?php
// 载入PHPMailer类 
require_once('class.phpmailer.php'); 
require_once('class.smtp.php');
// 抓取多看免费图书信息
$content = file_get_contents('http://www.duokan.com/');
preg_match('/<a .*href\s*="(.+?)".+alt="限时免费".+<\/a>/',$content,$result);
$content = file_get_contents('http://www.duokan.com'.$result[1]);
preg_match('/<div class="desc">(([\s]|.)+?)<\/table>/',$content,$result);
preg_match('/<h3>(.+)<\/h3>/',$result[1],$name);
$name = $name[1];
preg_match_all('/<tr>(([\s]|.)+?)<\/tr>/',$result[1],$result);
foreach($result[1] as $key){
$info .= preg_replace('/(<.+?>)|\s/','',$key).'<br/>';
}
preg_match('/<article.+id="book-content"(([\s]|.)+?)<\/article>/',$content,$result);
$content = preg_replace('/(<.+?>)/','',$result[0]);

// 调用PHPMailer类发送邮件
$mail = new PHPMailer(); //实例化 
$mail->IsSMTP(); // 启用SMTP 
$mail->Host = "smtp.exmail.qq.com"; //SMTP服务器 
$mail->Port = 25;  //邮件发送端口 
$mail->SMTPAuth   = true;  //启用SMTP认证 
 
$mail->CharSet  = "UTF-8"; //字符集 
$mail->Encoding = "base64"; //编码方式 
 
$mail->Username = "ex@mple.com";  //你的邮箱 
$mail->Password = "passwprd";  //你的密码 
$mail->Subject = "多看免费书:{$name}"; //邮件标题 
 
$mail->From = "ex@mple.com";  //发件人地址(也就是你的邮箱) 
$mail->FromName = "送书女仆";  //发件人姓名 
 
$address = "my@email.com";//收件人email 
$mail->AddAddress($address, "主人");//添加收件人(地址,昵称) 

$mail->IsHTML(true); //支持html格式内容 
$mail->Body = "亲爱的主人,今天的免费图书是酱紫的哦~<br/><br/>{$name}<br/>{$info}<br/>{$content}"; //邮件主体内容 
//发送 
if(!$mail->Send()) { 
  echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
  echo "Message sent!"; 
} 

设定成每天一次Cron就行。

PHP发邮件部分的代码直接用了 这里的 。调用了PHPMailer的类来使用SMTP发送邮件,关于PHPMailer详见 其github页

抓取多看每日免费书籍的相关信息

    1. Puteulanus 文章作者
      UnknownUnknownUnknownUnknown

      多看已经把每日免费书籍取消了。现在是限时免费阅读,就是一定时间内你可以看,过了时间就不行了。。_(:з」∠)_就在我这东西写完之后没几天,说多了都是泪。。

      回复