记得刚学php时,php100的张恩民老师就讲了一个“小偷程序”,那时我还不知道原来这就是采集啊,之后很长一段时间都没碰过“采集”,偶尔逛论坛的时候也会听到有人在讲采集,总感觉采集怎么那么像以前的那个“小偷程序”,后来才知道原来“小偷程序”就是采集。
最近在迷上一本仙侠“九阳绝脉”,觉得很好看,就问了作者可不可以在我的网站上连载,作者说可以,可麻烦的是他的小说有那么多章,如果我一章一章插入到数据库,这个工作量得多大,我突然想可不可以用采集来完成这个工作呢,马上测试了一下,果然行,不用几分钟就把它小说的内容采集到我的网站来了,下面我会讲一下我是怎么使用采集来完成这个工作的。(对于采集,我也还只是新手,有什么错误之处欢迎提出)
看了上面那么多,大家都应该大致对采集有一个了解了吧,简单来说,采集就是从别人的网站上获取我们要想要的内容,这感觉有点像“偷取”,所以也俗称“小偷程序”。采集大概一个工作流程如下:
1、寻找目标网站sUrl。(用file_get_contents(sUrl)获得目标网站的全部内容)
2、获得自己想要的内容(查看源文件,分析我们想要内容在什么标记之间,然后用正则表达式来匹配得到我们想要的内容)
3、将所得到的内容插入到我们的数据库(当然这里还要先对获得的内容进行过滤)
先举一个最简单的例子,采集百度的标题
<?php
//目标网站sUrl="http://www.baidu.com";
sUrl="http://www.baidu.com";
$con=file_get_contents(sUrl);用file_get_contents()来获取网站的全部内容;
//我们要采集的是百度的标题,先查看源文件,百度的标题在<title></title>标记之间,然后用正则表达式来匹配<title></title>标记之间的内容。
eregi("<title>(.*)</title>",$con,$title_arr); //这里不对函数作解释了,这句的意思就是把<title></title>标记之间的内容匹配出来,然后保存到$title_arr数组上。
print_r($title_arr);//输出数组信息,我们会看到array(0=>"<title>百度一下,你就知道</title>",1=>"百度一下,你就知道");
//从上面的输出我可以看到,$title_arr[1]才是我们真正要匹配的内容。
?>下面我讲一下怎么批量采集,不过这个批量采集有一定的条件,1、目标网址成一定规律递增,比如说网址1:http://googlephp.cn/1.html;网址2:http://googlephp.cn/2.html,依次类推。。。 2、批量采集的内容都在相同的标记之间。
我也就是通过批量采集来获得小说的内容,然后插入到我的数据库,下面实例看一下怎么完成这个工作的。
<?php
//我要采集的是小说阅读网---九阳绝脉1-163章的内容,而这1-163章的网址都是依次递增的。
//目标网址从http://www.readnovel.com/novel/69764/1.html到http://www.readnovel.com/novel/69764/163.html
//所以我这里可以用一个循环,依次读取每一章的内容;
for($i=1;$i<=163;$i++){
$sUrl="http://www.readnovel.com/novel/69764/".$i.".html";
$con=file_get_contents($sUrl);//读取网站的全部内容;
//查看源文件,分析我们想得到的内容在什么标记之间。我这里要得到是每一章的标题跟内容,它们在<div id="article"></div>标记之间。
//但是却不能直接匹配<div id="article"></div>之间的内容,因为后面还有</div>这个标记,它会把后面的内容也匹配进来,所以采集的时候要注意我们
//要匹配的内容是不是在惟一的标记之间。所以我又在<div id="article"></div>标记下找了一个<p class="shop">标记。
eregi("<div id=\"article\">(.*)<p class=\"shop\">",$con,$con_arr)//把<div id="article"><p class="shop">标记之间的内容匹配出来。
//我们已经获得了我们想要的内容,接下来还要把文章的标题跟文章的内容分离出来
eregi("<h2>(.*)</h2>",$con_arr[1],$title_arr) //从我们获得的内容再把<h2></h2>标记之间的内容匹配出来,也就是文章的标题。
$title=addslashes($title_arr[1]); //前面已经说了$title_arr[1]才是我们真正要的内容,另外还要进行转义,因为还要插入到数据库。
eregi("</h2>(.*)</div>",$con_arr[1],$content_arr);//把</h2></div>标记之间的内容匹配出来,也就是文章的内容。
$content=addslashes($content_arr[1]);
$sql="insert into novel(id,title,content) values('','$title','$content');
mysql_query($sql);//插入到数据库,前面还要对数据库连接,这里没写了。
}
//搞定,收工。
?>第一次使用采集,可能理解还不是很深,欢迎一起讨论。另喜欢武侠仙侠的朋友可以看一下我采集的小说“九阳绝脉”。
PS:对于采集别人网站的内容可能会涉及到版权问题,所以最好跟原作者联系好。

发表于 2012年02月6日 6:00 上午
qxjfrhpphmfqiq, Buy viagra online, IVfXSaY, acai berry diet, PDUegAI, Girl from extenze commercial, GqulMFE, Thesafecig Reviews, SfrXAEa, Drug information facts about tramadol, hCiPByi, Eazol ingredients, UUtnsXD, Smoke deter, yBTMUQC, HGH Energizer, CxNpYWC.
[回复]
发表于 2012年02月6日 6:01 上午
gblzyhpphmfqiq, Buy tramadol cialis, GduTeEq, Online pharmacy xanax without, ucjqmhy, Nexium, MGqZkrW, Ultram, yihEfAw, Order xanax canada, pglOeyz, Generic valium no prescription, nmESjCi, Is it legal to order xanax online, gUvZqzK, Clonazepam dosage, nMYqcJr.
[回复]
发表于 2012年02月6日 6:03 上午
ojkiuhpphmfqiq, Buy diazepam online, jYUJtex.
[回复]
发表于 2012年02月6日 6:04 上午
jbpihhpphmfqiq, Generic Propecia, MSBJDnX, Codeine extraction, erOklXq, Nexium, AkqrgId, ritalin, PkNQdrS, clonazepam, XLTeXvV, Ativan .5mg, JlTGEqY.
[回复]
发表于 2012年02月6日 6:06 上午
gwdtmhpphmfqiq, Generic phentermine, qTfZOvP, Ambien no prescription needed, EMNrIUy, Ambien withdrawal symptoms, gvQNGGS, Can person on blood thinner take lunesta, YKTZBNe, Buy xanax 2 mg bars, kFXpHWF, Cymbalta and provigil, HBzzdgN, Ativan without prescription, sfiHpzH, Phentermine cod overnight delivery no rx, qeuMtMu.
[回复]
发表于 2012年02月6日 6:07 上午
llsiuhpphmfqiq, Ativan, PFLJPXV, Cialis, QrsABxY, Ativan order online, IioJVdI, Buy klonopin online consultation, nFKrjwd, Order tramadol no prescription, nCGDDEw, Cheap clonazepam, upgDdKL.
[回复]
发表于 2012年02月6日 6:09 上午
gowrthpphmfqiq, Phallosan, qVgZKUQ.
[回复]
发表于 2012年02月6日 6:10 上午
agbjwhpphmfqiq, Buy klonopin, BAxPsBf.
[回复]
发表于 2012年02月6日 6:15 上午
wdpfrhpphmfqiq, Buy codeine online, ewRsyxi.
[回复]
发表于 2012年02月6日 6:16 上午
nxowzhpphmfqiq, Soma, jhwVluK.
[回复]
发表于 2012年02月6日 6:19 上午
trvbohpphmfqiq, Order valium no prescription, tBNuUVu.
[回复]
发表于 2012年02月6日 6:20 上午
uqbymhpphmfqiq, vardenafil, FrZgWNV.
[回复]
发表于 2012年02月6日 6:20 上午
kzmlehpphmfqiq, Xanax smoking, KeIGqPX.
[回复]
发表于 2012年02月6日 6:21 上午
krrkchpphmfqiq, Viagra, QCkcnkh.
[回复]
发表于 2012年02月6日 6:28 上午
dgyjlhpphmfqiq, Viagra portland oregon vancouver washington, kNOyhDa, Discount viagra, dlHpTwa, $300 a day binary options, OXSBKWp, Electronic Cigarettes, aKUmAfV, Side effects of phentermine, yrhBnzq, Buy electronic cigarettes online, fLxgaiJ, Buy viagra online and get prescription, cafdIPw, Valium online no prescription, aRbFBzL.
[回复]
发表于 2012年02月6日 6:30 上午
vvkxyhpphmfqiq, Buy klonopin 37.5, zyWYEcz, Valium online purchase, VhyJPij, Adipex-p, sjrRuxB, Phentermine adipex, GUcFgdF, Purchase klonopin per pill, eckWYFv, Online pharmacy xanax without, lMNYLyf, Phentermine overnight delivery, nwmomth, Ultram, rInEeyb.
[回复]
发表于 2012年02月6日 6:30 上午
uyfarhpphmfqiq, Phentermine no prescription, FeKgYJL, Danger ambien, yjTRMoG, Order adipex, RYnSiZJ, Cheap xanax alprazolam, WuqiXhO, Xanax vs klonopin for sleep, UIxuhWf, Levitra pro, jlhKEiH, Tramadol hcl 50 mg, SdGeBDq, Trazodone and ambien, utrKcfn.
[回复]
发表于 2012年02月6日 6:31 上午
qsufmhpphmfqiq, Buy phentermine without rx, jQcpdOy, Buy ambien overnight delivery, jDDBTwC, Lorazepam, WzAlAsh, 1 mg ativan, GzYhclx, Zolpidem tartrate, HwtgctA, Xanax online no prescription calgary, LwoCfNL.
[回复]
发表于 2012年02月6日 6:32 上午
vtzachpphmfqiq, How long does it take for extenze 2 oz shot to work, qCJKFZU.
[回复]
发表于 2012年02月6日 6:34 上午
fkpfbhpphmfqiq, Slots online double diamonds, ttYcIih, Purchase cheap xanax, SrFMRdi, Hoodia Gordonii Plus, egvAcaA, Idol Tan, abgrIAe, Forex, OVidLxS, Libido For Her, lGUfHgr, Vitalikor reviews, KybskVd, Herbal viagra reviews, dPFkQrG.
[回复]
发表于 2012年02月6日 6:35 上午
kyurnhpphmfqiq, Computer hardware software brain web hosting domaint, hhPyCxi.
[回复]
发表于 2012年02月6日 6:37 上午
cmcsehpphmfqiq, Buy Ambien, fMMRgmX, Order klonopin without, BRqAsks, Buy online 2 day delivery tramadol arkansas, mHUmnUD, Buy viagra no prescription, PWTGtry, http://Www.lunesta.com, nLDaaIH, Klonopin social anxiety, kgGJnnP, Ativan lorazepam, YzwmodZ, Valium buy diazepam, HexGfmy.
[回复]