用http的get方法,構(gòu)造要查詢的url,get下來,分析結(jié)果頁面即可
首先是構(gòu)造url,以下是一些示例,主要看清楚?號后面的參數(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個
第二步是解釋搜索結(jié)果頁面:
<meta http-equiv="content-type" content="text/html;charset=gb2312">
Google
搜索結(jié)果個數(shù)的字符串前綴:約有<b> //獲取個數(shù)用字符串定位的方式
搜索結(jié)果開始的標簽:<div id=res> //也可以用字符串定位的方式,要準確就用查找標簽定位的方式
各個搜索結(jié)果的開始標簽:<div class=g> //字符串定位的方式
搜索結(jié)果的url在第一個<a target=_blank class=l>標簽里頭
搜索結(jié)果的標題在<a></a>的標簽之間
搜索結(jié)果的摘要在接下來的<table><tr><td>標簽里頭直到<b>...<b><br>
搜索結(jié)果的重寫的url在<b>...<b><br>之后的<span>標簽里頭,格式為:url,一個空格,網(wǎng)頁大小
搜索結(jié)果的網(wǎng)頁快照在接下來的<a class=fl>的標簽里頭,屬性中有url,標簽之間有網(wǎng)頁快照文字
接下來還有類似網(wǎng)頁等,都在<a class=fl>標簽里頭
各個搜索結(jié)果的結(jié)束標簽是</td></tr></table></div>
......................
相關(guān)搜索的開始標簽:<p class=e>
在接下來的各個<a></a>標簽之間的內(nèi)容就是相關(guān)搜索的內(nèi)容
直到標簽<br clear=all>就可以結(jié)束了
Baidu
搜索結(jié)果個數(shù)的字符串前綴:<td align=\"righ,在定位該字符串后,直到</td>,即在這個td標簽之內(nèi)含有的字符串包含相關(guān)網(wǎng)頁數(shù)和用時
搜索結(jié)果開始的標簽:<DIV id=ScriptDiv></DIV>
各個搜索結(jié)果的開始標簽:<table
搜索結(jié)果的url在第一個<a target=_blank class=l>標簽里頭
搜索結(jié)果的標題在<a></a>的標簽之間,以<br>標簽結(jié)束
搜索結(jié)果的摘要以<br>開始直到下一個<br>標簽
接下來的一行(<br>換行)的font標簽中有搜索結(jié)果url的重寫,一個空格,網(wǎng)頁大小,網(wǎng)頁時間
在接下來會有一些<a>標簽如百度快照,直到又一個<br>
然后搜索結(jié)果的結(jié)束標簽</table>
.........................
導(dǎo)航條的開始標簽:<br clear=all>
導(dǎo)航條的內(nèi)容在開始標簽之后的<div class="p"></div>標簽之間
相關(guān)搜索在接下來的<div>標簽之間的各個<a>標簽之內(nèi)
其他考慮:對于字符串的匹配可以利用kmp,注意到匹配搜索結(jié)果各部分的時候所用到的模式字符串的最大前綴字符串最多是一個字符,這樣可以避免求取最大前綴字符串從而提高效率;如果要精確地匹配還需要弄兩個函數(shù),一個用來構(gòu)造標簽,一個用來讀取標簽之間的文本。