用http的get方法,構(gòu)造要查詢的url,get下來,分析結(jié)果頁面即可
首先是構(gòu)造url,以下是一些示例,主要看清楚?號(hào)后面的參數(shù)所代表的意思即可:
http://www.google.cn/search?num=100&&q=%E5%85%83%E6%90%9C%E7%B4%A2&start=10
http://www.baidu.com/s?wd=%D4%AA%CB%D1%CB%F7&rn=100&pn=10 //第二頁pn
http://www.yahoo.cn/s?p=%E5%85%83%E6%90%9C%E7%B4%A2&b=10 //第二頁b
http://search.yahoo.com/search?n=100&p=%E5%85%83%E6%90%9C%E7%B4%A2&b=101
http://cnweb.search.live.com/results.aspx?q=%E5%85%83%E6%90%9C%E7%B4%A2&first=51 //第二頁first=51
http://p.zhongsou.com/p?w=%D4%AA%CB%D1%CB%F7&b=3 //b=3表示第三頁
http://www.soso.com/q?w=%D4%AA%CB%D1%CB%F7&num=20&pg=1 //第一頁,每頁20個(gè)
第二步是解釋搜索結(jié)果頁面:
<meta http-equiv="content-type" content="text/html;charset=gb2312">
Google
搜索結(jié)果個(gè)數(shù)的字符串前綴:約有<b> //獲取個(gè)數(shù)用字符串定位的方式
搜索結(jié)果開始的標(biāo)簽:<div id=res> //也可以用字符串定位的方式,要準(zhǔn)確就用查找標(biāo)簽定位的方式
各個(gè)搜索結(jié)果的開始標(biāo)簽:<div class=g> //字符串定位的方式
搜索結(jié)果的url在第一個(gè)<a target=_blank class=l>標(biāo)簽里頭
搜索結(jié)果的標(biāo)題在<a></a>的標(biāo)簽之間
搜索結(jié)果的摘要在接下來的<table><tr><td>標(biāo)簽里頭直到<b>...<b><br>
搜索結(jié)果的重寫的url在<b>...<b><br>之后的<span>標(biāo)簽里頭,格式為:url,一個(gè)空格,網(wǎng)頁大小
搜索結(jié)果的網(wǎng)頁快照在接下來的<a class=fl>的標(biāo)簽里頭,屬性中有url,標(biāo)簽之間有網(wǎng)頁快照文字
接下來還有類似網(wǎng)頁等,都在<a class=fl>標(biāo)簽里頭
各個(gè)搜索結(jié)果的結(jié)束標(biāo)簽是</td></tr></table></div>
......................
相關(guān)搜索的開始標(biāo)簽:<p class=e>
在接下來的各個(gè)<a></a>標(biāo)簽之間的內(nèi)容就是相關(guān)搜索的內(nèi)容
直到標(biāo)簽<br clear=all>就可以結(jié)束了
Baidu
搜索結(jié)果個(gè)數(shù)的字符串前綴:<td align=\"righ,在定位該字符串后,直到</td>,即在這個(gè)td標(biāo)簽之內(nèi)含有的字符串包含相關(guān)網(wǎng)頁數(shù)和用時(shí)
搜索結(jié)果開始的標(biāo)簽:<DIV id=ScriptDiv></DIV>
各個(gè)搜索結(jié)果的開始標(biāo)簽:<table
搜索結(jié)果的url在第一個(gè)<a target=_blank class=l>標(biāo)簽里頭
搜索結(jié)果的標(biāo)題在<a></a>的標(biāo)簽之間,以<br>標(biāo)簽結(jié)束
搜索結(jié)果的摘要以<br>開始直到下一個(gè)<br>標(biāo)簽
接下來的一行(<br>換行)的font標(biāo)簽中有搜索結(jié)果url的重寫,一個(gè)空格,網(wǎng)頁大小,網(wǎng)頁時(shí)間
在接下來會(huì)有一些<a>標(biāo)簽如百度快照,直到又一個(gè)<br>
然后搜索結(jié)果的結(jié)束標(biāo)簽</table>
.........................
導(dǎo)航條的開始標(biāo)簽:<br clear=all>
導(dǎo)航條的內(nèi)容在開始標(biāo)簽之后的<div class="p"></div>標(biāo)簽之間
相關(guān)搜索在接下來的<div>標(biāo)簽之間的各個(gè)<a>標(biāo)簽之內(nèi)
其他考慮:對(duì)于字符串的匹配可以利用kmp,注意到匹配搜索結(jié)果各部分的時(shí)候所用到的模式字符串的最大前綴字符串最多是一個(gè)字符,這樣可以避免求取最大前綴字符串從而提高效率;如果要精確地匹配還需要弄兩個(gè)函數(shù),一個(gè)用來構(gòu)造標(biāo)簽,一個(gè)用來讀取標(biāo)簽之間的文本。