我试图用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,我相信它会非常受欢迎。
答案 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的元素选择该元素中的所有内容并打印它。