<li class="unit"><a href="/ilist/list" class="t" boss="btnViewMyList" rel="http://1.t.qq.com/asyn/list.php" type="list"><span class="text">名单</span></a></li>从这句中
(1)如何提取出"名单"对应的url
(2)如何获取名单这个页面所对应的源码
希望做过的朋友能给出写思路!谢谢!
(1)如何提取出"名单"对应的url
(2)如何获取名单这个页面所对应的源码
希望做过的朋友能给出写思路!谢谢!
可以直接用字符串截取(正则或indexOf都行)出所有的 <a> 标签,然后再检查是否包含 “名单” 二字;
也可以直接用HTML解析器将其转换为文档对象,然后就直接按Element来检索。(2) 一般直接用HttpClient模拟浏览器去访问该URL地址,就能得到所有代码了。
String html="<li class=\"unit\"><a href=\"/ilist/list\" class=\"t\" boss=\"btnViewMyList\" rel=\"http://1.t.qq.com/asyn/list.php\" type=\"list\"><span class=\"text\">名单</span></a></li>";
Pattern p = Pattern.compile("<a\\s.*?href=\"([^\"]*)(.*?)</a>", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(html);
while (m.find()) {
if (m.group(2).indexOf("名单")>= 0) {
System.out.println("HREF: " + m.group(1) + "\t\tWITH: " + m.group(2));
}
}
循环中“m.group(1)”,就是你要的URL地址了。
我同通过Socket得到的网页的源码和“右键”-->“查看源码得到的源码不同,这个问题该怎么解决!
URL url = new URL("http://xxxx:xxxx/ilist/list");
InputStream is = url.openStream();
BufferedReader bufr = new BufferedReader(new InputStreamReader(is));
String line = null;
while((line = bufr.readLine()) != null) {
System.out.println(line);
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class test1 { public static void main(String[] a) throws IOException {
String url = "http://t.qq.com/WGZJ281929938?pgv_ref=im.perinfo.perinfo.icon&ptlang=2052#!/list/qqfriends/5";
System.out.println(getHTML(url, "UTF-8")); // 使用原网页里声明的gb2312反而会出现乱码
}
public static String getHTML(String pageURL, String encoding) {
StringBuilder pageHTML = new StringBuilder();
try {
URL url = new URL(pageURL);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestProperty("User-Agent", "MSIE 7.0");
BufferedReader br = new BufferedReader(new InputStreamReader(
connection.getInputStream(), encoding));
String line = null;
while ((line = br.readLine()) != null) {
pageHTML.append(line);
pageHTML.append("\r\n");
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return pageHTML.toString();
}
}我是想去获取腾讯微博里面首页中“名单”对应的源代码的,可是得到的与“全部广播”对应的源码相同,好像是通过不同的url得到的源码时相同的。我是想提取出“名单”中的动态的,可是得到的源码中中却没有对应的动态。