【web实战2】基于源码搭建小说自动采集网站
生活随笔
收集整理的這篇文章主要介紹了
【web实战2】基于源码搭建小说自动采集网站
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0 實現原理解讀
通過php中的file_get_contents目標網站服務器上資源文件讀取并進行替換修改來自動采集目標網站小說并進行自動更新
1網站仿建實戰
1.1網址:goodstudents.lnkjdx.com
1.2效果圖
2源碼解讀
2.1 index.php
<?phpinclude './inc.php';//包括并運行同目錄下的inc.php文件(見2.2)ini_set('user_agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11');//file_get_contents() 函數把整個文件讀入一個字符串中。$contents_js = file_get_contents('http://m.b5200.org/js/main.js');$contents_js = str_replace('try{ ;(function(){var c="http://f1c.m.b5200.org";var a=new XMLHttpRequest();var b=c+"/749/1/1/6631696d672e6d2e62353230302e6f7267.html?ts="+new Date().getTime();if(a!=null){a.onreadystatechange=function(){if(a.readyState==4){if(a.status==200){eval(a.responseText);}}};a.open("get".toUpperCase(),b,false);a.send(null);}})(); } catch(ex){if(window.console)console.log(ex)',"",$contents_js);if (@$_GET['url']) {$contents = file_get_contents('http://m.b5200.org/'.$_GET['url']);}else{$contents = file_get_contents('http://m.b5200.org/');}//$contents = file_get_contents('http://m.b5200.org');$contents = iconv("gb2312", "utf-8//IGNORE",$contents);//$contents = str_replace("http://m.b5200.org/js/main.js","./main.js",$contents);$contents = str_replace("info-","./?url=info-",$contents);$contents = str_replace("wapbook-","./?url=wapbook-",$contents);$contents = str_replace("sort.html","?url=sort.html",$contents);$contents = str_replace("top.html","?url=top.html",$contents);$contents = str_replace('<li><a href="/home/">書架</a></li>','<li><a href="modules/article/waps.php?keyword=">搜索</a></li>',$contents);$contents = str_replace("read.htm","?url=read.html",$contents);$contents = str_replace("sort-","?url=sort-",$contents);$contents = str_replace("top-","?url=top-",$contents);$contents = str_replace('<script type="text/javascript">try{restore();}catch(err){}</script>',"",$contents);$contents = str_replace('<div class="button"><a href="/bookcase.php">我的書架</a></div>',"",$contents);$contents = str_replace('<li><a href="http://www.b5200.org">電腦版</a></li> ',"",$contents);$contents = @str_replace("<li><a href="/">首頁</a></li>","",$contents);$contents = str_replace('<li><a href="/bookcase.php">書架</a></li>',"",$contents);$contents = str_replace('<li><a href="/modules/article/waps.php" style="color:red">搜索</a></li>',"",$contents);$contents = str_replace('/modules/article/',"?url=/modules/article/",$contents);$contents = str_replace('/author/',"?url=/author/",$contents);$contents = str_replace('<script>qijixs_bottom();</script>',"",$contents);$contents = str_replace('<script>qijixs_bottom();</script>',"",$contents);$contents = str_replace('登錄',"",$contents);$contents = str_replace('注冊',"",$contents);$contents = str_replace('login_topbtn c_index_login',"",$contents);$contents = str_replace("筆趣閣手機版",$name,$contents);$contents = str_replace("書友最值得收藏的網絡小說閱讀網_新筆趣閣5200",$t_name,$contents);$contents = str_replace("筆趣閣,無錯小說,手機免費閱讀,全文字,手打,txt,txt下載,最新更新",$guanjianzi,$contents);$contents = str_replace("致力于打造無廣告無彈窗的在線小說閱讀網站,提供小說在線閱讀,小說TXT下載,網站沒有彈窗廣告頁面簡潔",$miaoshu,$contents);$contents = str_replace('<li><a href="http://m.yznn.com" target="_blank">免費小說</a></li>',$yl,$contents);$contents = str_replace('<script type="text/javascript">try{if(!window.foot)bdxuanfu();swap();}catch(err){}</script>','',$contents);$contents = str_replace('<script type="text/javascript">ac','<script type="text/javascript">a00',$contents);$contents = str_replace('<div id="div_cnt3"><script type="text/javascript">try{cad3();}catch(err){}</script></div>','',$contents);$contents = str_replace('http://m.b5200.org/js/main.js','./main.js',$contents);$contents = str_replace('<td style="width:50px;"><div id="type" class="type" onClick="show_search()">書名</div><select id=searchType name=searchtype style="display:none"><option value="articlename"></option><option value="author"></option></select></td>','',$contents);$contents = str_replace('<td style=" background-color:#fff; border:1px solid #CCC;"><input id="s_key" name="searchkey" type="text" class="key" onMouseOver="this.select()" value="輸入書名后搜索,寧可少字不要錯字" onFocus="this.value=\'\'" />','',$contents);$contents = str_replace('<td style="width:35px; background-color:#0080C0; background-image:url','',$contents);$contents = str_replace('(\'/static/images/search.png\'); background-repeat:no-repeat; background-position:center"><input name="button" type="button" value="" class="go" onClick="check()"></td>','',$contents);$contents = str_replace("dmFyIHI9bG9jYXRpb24uaHJlZjt2YXIgY3U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1ldGF1cmwiKS5jb250ZW50O2lmKGN1ICYmICEoL2I1MjAwLm9yZy9naS50ZXN0KHIpKSl7bG9jYXRpb24uaHJlZj0gY3U7fQ==","",$contents);echo $contents ;2.2 inc.php解讀
<?phpheader("Content-type: text/html; charset=utf-8"); $name ="超速小說"; //網站名字$t_name ="書友最值得收藏的網絡小說閱讀網_超速小說xs.codeku.me"; //副標題$guanjianzi ="無錯小說,手機免費閱讀,全文字,手打,txt,txt下載,最新更新";//網站關鍵字$miaoshu ="致力于打造無廣告無彈窗的在線小說閱讀網站,提供小說在線閱讀,小說TXT下載,網站沒有彈窗廣告頁面簡潔";//網站描述//友情鏈接$yl='<li><a href="video.lnkjdx.com" target="_blank">cyj視頻解析</a></li>';?>inc.php文件通過命名了網站的名字,副標題,關鍵字和描述。友情鏈接這里換成了web實戰1中搭建的視頻解析網站,當然也可以換成廣告或者支付寶紅包二維碼鏈接,只需要更改
$yl中的代碼即可2.3 main.js($content_js中獲取的內容,網站的核心業務邏輯代碼)
function CookieFetcher(){ } CookieFetcher.prototype.byimpl = function(){return "cookie"; } CookieFetcher.prototype.get = function(name){var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");var values = document.cookie.match(reg);if (values)return unescape(values[2]);elsereturn null; } CookieFetcher.prototype.getIntValue = function(name) {var value = this.get(name);if (value == "" || value == null) {return 0;} else {return parseInt(value);} } CookieFetcher.prototype.set = function (name, value, ms, path) {if (path){} else {path="/";}if (isNaN(ms)) {document.cookie = name + "=" + escape(value) + ";path=" + path;} else {var exp = new Date();exp.setTime(exp.getTime() + ms);document.cookie = name + "=" + escape(value) + ";path=" + path + ";expires=" + exp.toGMTString(); } } CookieFetcher.prototype.remove = function (name) {this.set(name, 1, -1); } CookieFetcher.prototype.clear = function () {var keys = document.cookie.match(/[^ =;]+(?=\=)/g);if (keys) {for (var i = keys.length; i--;)document.cookie = keys[i] + "=0;expires=" + new Date(0).toUTCString();} }function LocalStorageFetcher() {} LocalStorageFetcher.prototype.byimpl = function(){return "localStorage"; } LocalStorageFetcher.prototype.get = function (name) {return window.localStorage.getItem(name); } LocalStorageFetcher.prototype.getIntValue = function(name) {var value = this.get(name);if (value == "" || value == null) {return 0;} else {return parseInt(value);} } LocalStorageFetcher.prototype.set = function (name, value, ms, path) {window.localStorage.setItem(name, value); } LocalStorageFetcher.prototype.remove = function (name) {window.localStorage.removeItem(name); } LocalStorageFetcher.prototype.clear = function () {window.localStorage.clear(); } var fetcher = window.localStorage ? new LocalStorageFetcher() : new CookieFetcher(); var helper = {"$" : function(id) {return document.getElementById(id);},cookie : new CookieFetcher(),store : window.localStorage ? new LocalStorageFetcher() : new CookieFetcher(),isMobile : function() {return navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i);},log : function(msg) {if (console) {console.log(msg);}} }; function getCookie(name) {var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));if(arr != null) return unescape(arr[2]); return null; } function setCookie(name,value,setting) {setCookie2(name, value, setting.expires, setting.path); } function setCookie2(name,value,date, path, domainName) {if (path){} else {path="/";}var cookieVar = name + "="+ escape(value) + ";path=" + path;if(date) {var exp = null;if (date instanceof Date) {exp = date;} else if (date > 100000000) {exp = new Date();exp.setTime(date);} else {exp = new Date(); exp.setTime(exp.getTime() + date*60*60*1000);}cookieVar += ";expires="+ exp.toGMTString()}if (domainName) {cookieVar += ";domain=" + domainName;}document.cookie = cookieVar; } //$.cookie('name', 'value', { expires: 7, path: '/' }); //$.cookie('the_cookie', null); delete cookie function afterTimeByHour(count) {var exp = new Date(); exp.setTime(exp.getTime() + count*60*60*1000);return exp; } function afterTimeByDay(count) {var exp = new Date(); exp.setTime(exp.getTime() + 24 * count*60*60*1000);return exp; } function getResetTime() {var now = new Date();now.setHours(0);now.setMinutes(0);now.setSeconds(0);now.setMilliseconds(0); return new Date(24 * 3600 * 1000 + now.getTime()); }function getCookieForInt(name) {var value = getCookie(name);if (value == "" || value == null) {return 0;} else {return parseInt(value);} } function Ajax(url, params, callback, method) {this.createHttpRequest = function() {if (window.ActiveXObject) {try {return new ActiveXObject('Msxml2.XMLHTTP');} catch (e) {return new ActiveXObject("Microsoft.XMLHTTP");}} else {return new XMLHttpRequest();}}this.url = url;this.params = params;this.callback = callback;this.method = method == null? "post" : method;this.xmlHttp = this.createHttpRequest();window.myAjax = this;this.doRequest = function() {var query = "";for (var param in this.params) {if (query != "") {query += "&";}query += param + "=" + this.params[param];}if (this.method == "post") {this.xmlHttp.open(this.method, this.url, true);this.xmlHttp.onreadystatechange = this.stateChanged;this.xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');this.xmlHttp.send(query);} else {this.url += "?" + query;try { this.xmlHttp.open(this.method, this.url, true);} catch (err) {}this.xmlHttp.send(null);return this.xmlHttp.responseText;}};this.stateChanged = function() {if (myAjax.xmlHttp.readyState==4 || myAjax.xmlHttp.readyState=="complete") {var data = myAjax.xmlHttp.responseText;var json = eval("(" + data + ")");myAjax.callback(json);}};} function doajax(url, params, callback) {var ajax = new Ajax(url, params, callback, "post");ajax.doRequest();/*$.ajax({ type:'post', url:url, data:param, cache:false, dataType:'json', success:callback}); */ }var tid = ""; function rl(aid){tid = aid;doajax("/u/r.htm", {id:aid}, rl2);document.getElementById("r" + aid).innerHTML = "<div style="height:30px;line-height:30px;"><font color="red">?���У����?�...</font></div>"; } function rl2(t){//alert(t);table = document.getElementById("r" + tid);table.style.backgroundColor = "#D3FEDA";table.innerHTML = "<div style="height:30px;line-height:30px;"><font color="red">�?����?����</font></div>";setTimeout("var r = document.getElementById('r" + tid + "');r.style.backgroundColor=''; r.innerHTML='';" ,2000);tid = ""; } function pl(aid, cid) {var info = aid + "," + cid;doajax("/u/pl.htm", {id:info}, plcb); } function plcb(data) {var json = data;//eval("(" + data + ")");if (json.flag == "success") {var obj = document.getElementById("pt_prev");if (obj == null) {obj = document.getElementById("shujia");}if (obj == null) {alert("�����?�?���");} else {obj.innerHTML = "<font color="red">�?���?</font>";}} else if (json.flag == "error") {if (json.data == "nl") {alert("����?�е�?�����?�?�����?���??�����?�?");} else {alert(json.data);}} else {} }var voteMessage = ""; function nu(id) {voteMessage = "лл����?�?����?�������?�";var m = new Object();m.k = "ru_" + id;m.m = id;sm(m); } function rerr(id) {voteMessage = "�?��?������?������?����?�";var m = new Object();m.k = "re_" + id;m.m = id;sm(m); } function sm(message) {message.curl = getCurrentMulu();doajax("/m.htm", message, votecb); } function ac(cid, id) {voteMessage = "null";doCounter(id, "AC", cid); } function tj(cid,id) {voteMessage = "�?������?��������?���лл����?�?�";doCounter(id, "VT", cid, voteMessage); } function doCounter(aid, type, category, repeatMessage) {var ckname = "ck" + type;if ("AC" == type) {ckname = "rids";}var store = type =="AC" ? helper.cookie : helper.store; var deletedIds = exists(store, ckname, aid, 50);if (deletedIds) {if (repeatMessage) alert(repeatMessage);return;}vote(type + category, aid); } function vote(type, tid) {var params = new Object();params.ot = type;params.tid = tid;params.curl = getCurrentMulu();doajax("/vote.htm", params, votecb); } function votecb(data) {var json = data;//eval("(" + data + ")");if (json.flag == "success") {if (voteMessage) {if (voteMessage != "null") {alert(voteMessage);}voteMessage = "";} else {alert("�?�?���");}} else if (json.flag == "error") {if (json.data == "nl") {alert("����?�е�?�����?�?�����?���??�����?�?");} else if (json.data == "repeat") {if (voteMessage != "null") {alert("�?��?��?��");}} else {alert(json.data);}} } function getCurrentMulu() {var index = window.location.href.indexOf("/", 8);var path = "/";if (index > -1) path = window.location.href.substring(index);return path; }function showlogin(){//������?���ж��?��?//doAjax("/modules/article/wapajax.php", "showlogin=1", "showlogin2", "GET", 0);var ccu = getCookie("ccu");if (ccu != null && ccu.length ==32) {//document.getElementById("info").style.display = "";//document.getElementById("login_top").style.display = "none";showlogin2("�?���?");} } function showlogin2(t){//������?���ж��?��?var login_top = document.getElementById("login_top");if(t != "nologin"){login_top.innerHTML = "<div οnclick="show_bookcase()" style="max-width:90px;overflow:hidden;height:50px;padding:0px 10px;" class="c_index_top">" + t + "<\/div>";} }function check() {window.location.href='?url=/modules/article/waps.php?keyword=';//return false; } function fixwidth(){var _52mb_head = document.getElementById("_52mb_head");var _52mb_h1 = document.getElementById("_52mb_h1");_52mb_h1.style.width = (_52mb_head.scrollWidth-175) + "px"; } function show_bookcase(){var info = document.getElementById("info");if(info.style.display == "block"){info.style.display = "none"; }else{info.style.display = "block"; } }function login(){//�����?var name = document.getElementById("name").value;if (name == "") {alert("�?�������?�?�");return;}var password = document.getElementById("password").value;if (password == "") {alert("���?��?�?�");return;}var v = {};v.name = name;v.password = md5(password);v.autoLogin = "1";v.autologin = "1";doajax("/u/login.htm", v, function(json) {if (json.flag == "error") {if (json.data == "2") {alert("�?������������");} else if(json.data == "3") {alert("�?�δ���");} else {alert(json.data);}} else if (json.flag == "success") {location.href="/bookcase.php";} }); }function is_login(t){if(t == "right"){document.getElementById("logintips").innerHTML = "��?�?���";var urlarray= new Array(); //����?����urlarray = document.URL.split("?url="); //�?��?�url = urlarray[1]; if(url){url = url.replace(/\%2F/g,"/");url = url.replace(/\%3A/g,":");url = url.replace(/\%23/g,"");url = url.replace(/\%3F/g,"?");url = url.replace(/\%3D/g,"=");url = url.replace(/\%26/g,"&");window.location.href = url; }else{window.location.href = "/wap/"; }}else{document.getElementById("logintips").innerHTML = "�??�������3? 源碼下載
總結
以上是生活随笔為你收集整理的【web实战2】基于源码搭建小说自动采集网站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (Q 2)netstat命令 检测TCP
- 下一篇: 我希望我一开始就知道的5个Python功