网站刮痧与Jsoup初学者

时间:2013-06-08 17:11:26

标签: java html parsing dom jsoup

我试图用jsoup来抓一个网站。我已经使用源HTML中的类“.eventTableRow”将表行提取到Elements对象中,但我不确定如何访问单个单元格。我试图通过下图中的方框突出显示单元格中的数据:

Elements row = doc.select(.eventTableRow);
System.out.println(row);
//prints similar to below image :

http://postimg.org/image/blc5ob74b/38f0a081/

我无法上传图片因为我没有10个声誉

我理解你们很多人这很简陋,我肯定会得到jsoup文档的链接,但是我一直在阅读并尝试了几个小时而且无法让它为我工作。

例如我尝试过:

Elements result = race.select("[attr^=712]"); 
//im attempting to find all atributes beginning 712 but it doesn't work

Elements result = race.select(".o bgc co"); 
//im attempting to find the cells with this class

和其他许多人一样,我真的不明白如何实现文档中的说明,这对我来说很难理解,而且我找不到任何基本的教程。

了解其他一些领域会帮助我更好地理解jsoup文档,也许是XML,DOM,解析HTML等等,这些都是我一直在搜索谷歌的东西。

任何帮助表示感谢。

p.s如果有人制作白痴指导使用jsoup进行刮擦或刮擦一般使用java,我相信它会非常受欢迎。

2 个答案:

答案 0 :(得分:0)

您可以迭代所有TD元素,这是工作示例:

package my.test;

import java.util.Iterator;

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

public class JsoupTest1 {

    public static void main(String[] args) {

        Document doc = Jsoup.parse("<table><tr class='eventTableRow'><td id='1' class='class1'>value1</td><td id='2' class='class2'>value2</td><td id='3' class='class3'>value3</td></tr></table>");
        Elements row = doc.select(".eventTableRow td");
        Iterator<Element> iterator = row.listIterator();
        while(iterator.hasNext())
        {
            Element element = iterator.next();
            String id = element.attr("id");
            String classes = element.attr("class");
            String value = element.text();
            System.out.println("Id : " + id + ", classes : " + classes+ ", value : " + value);
        }
    }

}

它输出:

Id : 1, classes : class1, value : value1
Id : 2, classes : class2, value : value2
Id : 3, classes : class3, value : value3

答案 1 :(得分:0)

快速草图:

    for(Element f : e.select("[id^=code_]")) {
        System.out.println("printed out links: " + f.select("*").text());
    }

基本思想是每个具有以'code_'开头的id的元素选择该元素中的所有内容并打印它。