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