java - Jsoup从页面解析html标签

标签 java html parsing jsoup

我正在尝试解析页面(任何页面动态解析器​​)。 代码是

Elements title = doc.select("title");
Elements metades = doc.select("meta[name=description]");

如您所见,我想提取标题标签。

它在大约每个网站上都运行良好,例如hinddroid.com 但它无法解析来自 google.com 和 youtube.com 的标题 我认为这是由于两个标签之间没有空格造成的。 大多数大型网站没有 html 空间来节省带宽。 请建议我 - 我想从网站解析 html。

完整代码:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.regex.*;

import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class post_link extends HttpServlet 
{
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{

response.setContentType("text/html");
PrintWriter out = response.getWriter();

try 
{
//out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" /><script src=\"http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.3.min.js\"></script><script src=\"jquery-social.js\"></script>");
String linktopro = "http://"+request.getParameter("link_topro");
//String linktopro = "http://hinddroid.com";
Document doc = Jsoup.connect(linktopro).userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").timeout(3000).get();
Elements png = doc.select("img[src]");
Elements title = doc.select("title:first-child");
//Elements title = doc.title();
Elements metades = doc.select("meta[name=description]");
Pattern p1 = Pattern.compile("http://.*|.com*?.(com)");

out.println("<script> var myCars=new Array(");

for(Element pngs : png)
{
Matcher m1 = p1.matcher(pngs.attr("src"));
boolean url = m1.matches();
String baseurl = "";
//out.println(url+"");
if(url)
{ baseurl = ""; }
else
{ baseurl = linktopro; }

out.println("\""+baseurl+""+pngs.attr("src")+"\",");
}
out.println("\"\"");
out.println(");</script>");

String outlink = "<div class=\"linkembox\">"+
"<div class=\"linkembox-img\">"+
"<img src=\"http://hinddroid.com/img/logo.gif\" width=\"150\" height=\"120\" />"+
"<br/><div id=\"linkimg-left\"><</div><div id=\"linkimg-right\">></div>"+
"</div>"+
"<div class=\"linkembox-text\">"+
"<div class=\"h\">"+title.html()+"</div><br/>"+
"<div class=\"h1\">"+metades.attr("content")+"</div>"+
"</div>"+
"</div>";
out.println(outlink);
out.print("<script> left(myCars); </script>");




}
catch(Exception ex)
{
out.print(ex);
} 
finally 
{
out.close();
}

}


}

最佳答案

我执行了选择器,没问题。完全没问题!

public static void main( String[] args ) throws IOException
{
    Document doc = Jsoup.connect("http://facebook.com").get();

    System.out.println("Title: " + doc.title());
    System.out.println("Meta Description: " + doc.select("meta[name=description]").first().attr("content"));

}

google.com ,您只能得到<title> ,不是<meta name=description...因为它不在 HTML 源代码中。

关于java - Jsoup从页面解析html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15131055/

相关文章:

php - 在 PHP 中检索到的图像显示不正确

html - CSS 不适用于每个元素

java - 如何使用 get 方法从链表中获取元素

parsing - Clojure代码解析

java - java中的单链表和双向链表?

java - 池已满时的 ThreadPoolTask​​Scheduler 行为

java - 如何更新和打印我的 "estimatedCost"Double? Java新手

html - 如何获得弧形的div?

C# decimal.Parse 行为

Java http文件上传和服务器响应