// 百度结果 Elements elements = doc.select("td.f > a"); for(Element link : elements){ System.out.println(link.text()); System.out.println(link.attr("href")); } // Google结果 Elements elements = doc.select("h3.r > a.l"); for(Element link : elements){ System.out.println(link.text()); System.out.println(link.attr("href")); }
http://www.baidu.com/s?bs=%C5%AE%C8%CB&f=8&wd=%B9%FE%B9%FE
你要是知道百度是通过什么算法转化的不如告诉我下,或者其他牛人告诉也行~~这个是查询“哈哈”之后第四页的连接http://www.baidu.com/s?wd=%B9%FE%B9%FE&pn=30&usm=2
"pn=30"来控制是第几页,每页显示10条数据,所以pn=90就是第十页关于得到记录,你可以读取网页源代码,写个正则,抓取想要的链接href="http://www.haha1.com/" target="_blank" ><font size="3"><em>哈哈</em>蚁在线音乐</font></a><br
关键字是放在<em>标签里的,抓取后还得replacall来做替换总体来说不好做,主要就是关键字转化的问题,谁知道是怎么转化的?
现在关键的问题是不知道怎么处理获得的页面源代码。来获取标题内容
google java.net.URLEncoder.encode(string,"UTF-8");
你要是知道百度是通过什么算法转化的不如告诉我下这个使用的是javascriipt的函数encodeURIComponent
还有个参数pn=10就是第10到20条 依次类推 有没有一次获取100条的
Jsoup现在支持CSS风格的选择。
Elements rs = doc.select("h3.r > a.l"); // google.com
然后就只剩下解析出搜索结果的标题了。
google.com &num=100
baidu.com &rn=100
regx = "<font size=\"3\">.*?</font>";虽然有点取巧吧~~顺便说一句.*?真的很强大~
// 百度结果
Elements elements = doc.select("td.f > a");
for(Element link : elements){
System.out.println(link.text());
System.out.println(link.attr("href"));
}
// Google结果
Elements elements = doc.select("h3.r > a.l");
for(Element link : elements){
System.out.println(link.text());
System.out.println(link.attr("href"));
}