昨天想看看電子書,看到一人的部落格寫的好。就想弄了下來,存到手機自己看看。
想了寫了個程式。
原理就是找到第一篇部落格問綻放地址線面會有下一篇的地址正則匹配。
代碼寫的不好,同時正則我發覺自己用的汗,蹩腳啊。
請大家拍磚,然後我再做改動。
php代碼如下:
<?php<br />//串連資料庫<br />$con = mysql_connect("localhost","root","root");<br />if (!$con)<br />{<br /> die('Could not connect: ' . mysql_error());<br />}<br />mysql_query("SET NAMES utf8");<br />mysql_query("SET CHARACTER SET utf8");<br />mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");<br />mysql_select_db("song", $con);<br />$sql = "SELECT next from song Order by id desc limit 1";<br />$result = mysql_query($sql);<br />if($row=mysql_fetch_row($result))<br />{<br /> $url = $row[0];<br /> if($url=="")<br /> exit();<br /> $sql = "SELECT id from song Where url='$url'";<br /> $result1 = mysql_query($sql);<br /> if($row1=mysql_fetch_row($result1))<br /> exit();<br />}<br />else<br />{<br /> $url = "http://blog.sina.com.cn/s/blog_4e598bfb01000clx.html";<br />}<br />//抓取網頁內容<br />$content = get_url_content($url);<br />//正則匹配內容<br />preg_match_all('/<h2/s+id="[/s/S]*"/s+class="titName/sSG_txta">([/s/S]*)<//h2>/i', $content, $m);<br />$blog_title = $m[1][0];<br />echo $m[1][0]."<br/>";<br />preg_match_all('/<div/s+id="sina_keyword_ad_area2"/s+class="articalContent">([/s/S]*)<div/sclass="shareUp">/i', $content, $m);<br />$blog_content = html2text($m[1][0],'UTF-8');<br />echo $blog_content."<br/>";<br />preg_match_all('/<span/s+class="SG_txtb">後一篇 ><//span><a/s+href="(.+?)">.*<//a>/i', $content, $m);<br />$next_url = $m[1][0];<br />echo $m[1][0]."<br/>";<br />$sql = "insert into song (title,content,url,next) values('$blog_title','$blog_content','$url','$next_url');";<br />mysql_query($sql);<br />$file_name = mysql_insert_id().".txt";<br />if(!file_exists($file_name)) //如果此檔案不存在,則自動建立一個<br />{<br />$fr = fopen($file_name,"w");<br />fwrite($fr,$blog_title."/n".$blog_content."/n".$url);<br />fclose($fr);<br />}<br />function get_url_content($url) {<br /> if(extension_loaded('curl')) {<br /> $ch = curl_init($url);<br /> curl_setopt($ch, CURLOPT_HEADER, 0);<br /> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br /> $content = curl_exec($ch);<br /> curl_close($ch);<br /> } else {<br /> $content = file_get_contents($url);<br /> }<br /> !$content && die("擷取地址:$url 內容出錯.");<br /> return $content;<br />}<br />//轉換html為文本的格式<br />function html2text($str,$encode = 'UTF-8')<br />{<br /> $str = preg_replace("/<style[/s/S]*<//style>/i","",$str);<br /> $str = preg_replace("/<mce:script[/s/S]*<//script><!--<br />/i","",$str);<br /> $str = preg_replace("/<br s*//?//>/i", "/n", $str);<br /> $str = preg_replace("/<//?p>/i", "/n/n", $str);<br /> $str = preg_replace("/<//?td>/i", "/n", $str);<br /> $str = preg_replace("/<//?div>/i", "/n", $str);<br /> $str = preg_replace("/<//?blockquote>/i", "/n", $str);<br /> $str = preg_replace("/<//?li>/i", "/n", $str);<br /> $str = preg_replace("/ /i", " ", $str);<br /> $str = preg_replace("/ /i", " ", $str);<br /> $str = preg_replace("/&/i", "&", $str);<br /> $str = preg_replace("/&/i", "&", $str);<br /> $str = preg_replace("/</i", "<", $str);<br /> $str = preg_replace("/</i", "<", $str);<br /> $str = preg_replace("/“/i", '"', $str);<br /> $str = preg_replace("/&ldquo/i", '"', $str);<br /> $str = preg_replace("/‘/i", "'", $str);<br /> $str = preg_replace("/&lsquo/i", "'", $str);<br /> $str = preg_replace("/’/i", "'", $str);<br /> $str = preg_replace("/&rsquo/i", "'", $str);<br /> $str = preg_replace("/>/i", ">", $str);<br /> $str = preg_replace("/>/i", ">", $str);<br /> $str = preg_replace("/”/i", '"', $str);<br /> $str = preg_replace("/&rdquo/i", '"', $str);<br /> $str = strip_tags($str);<br /> $str = html_entity_decode($str, ENT_QUOTES, $encode);<br /> $str = preg_replace("/&#.*?;/i", "", $str);</p><p> return $str;<br />}<br />?><br /><script language="JavaScript"><br />function myrefresh()<br />{<br /> window.location.reload();<br />}<br />setTimeout('myrefresh()',500); //指定1秒重新整理一次<br />// --></mce:script>