Java Android Jsoup,如何解析表?
我试图从网页上抓取一张桌子,但我似乎无法让它正常工作Java Android Jsoup,如何解析表?,java,android,jsoup,Java,Android,Jsoup,我试图从网页上抓取一张桌子,但我似乎无法让它正常工作 普里斯 阿迪斯 淘气 *Denne pris er Indberette af selskabet 我想知道桌子的价格和地址 这是我目前的代码 package com.example.android.soup; 导入android.os.Bundle; 导入android.support.v7.app.AppActivity; 导入android.view.view; 导入android.widget.TextView; 导入org.js
普里斯
阿迪斯
淘气
*Denne pris er Indberette af selskabet
我想知道桌子的价格和地址
这是我目前的代码
package com.example.android.soup;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.TextView;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共void获取(视图){
串吻=”;
TextView text=(TextView)findViewById(R.id.text1234);
尝试
{
Document doc=Jsoup.parse(“http://www.fdmbenzinpriser.dk/searchprices/1/3600");
System.out.println(doc.getElementById(“list_canvas”);
}
捕获(例外e)
{
e、 printStackTrace();
}
text.setText(sNodes);
}
}
parse()将从字符串()解析文档。您向它传递了一个不是HTML字符串的URL。您必须从URL获取()数据。这就是问题所在。以下是一个工作示例:
Document doc = Jsoup.connect("http://www.fdmbenzinpriser.dk/searchprices/1/3600").get();
System.out.println(doc.getElementById("list_canvas"));
既然您对访问tbody标签非常感兴趣,您可以试试
final Elements tbodyElements = doc.getAllElements().first().getElementsByTag("tbody");
for( int x = 0; x < tbodyElements.size(); x++ )
{
if( tbodyElements.get(x).attr("id").equals("list_canvas") )
{
// You know you are inside tbody tag, find all the td elements in it
final Elements tdElems = tbodyElements.get(x).getElementsByTag("td");
for( int y = 0; y < tdElems.size(); y++ )
{
final Element tdElem = tdElems.get(y);
if( tdElem.attr("tablebodylogo") )
{
// this will get you tags within tablebodylogo
final Elements childrenTDLogo = tdElem.children();
}
else if( tdElem.attr("tablebodyprice") )
{
// this will get you tags within tablebodyprice
final Elements childrenTDPrice = tdElem.children();
}
else if( tdElem.attr("tablebodyaddress") )
{
// this will get you tags within tablebodyaddress
final Elements childrenTDAddress = tdElem.children();
}
else if( tdElem.attr("tablebodydate") )
{
// this will get you tags within tablebodydate
final Elements childrenTDDate = tdElem.children();
}
}
}
}
final Elements tbodyElements=doc.getAllegements().first().getElementsByTag(“tbody”);
对于(int x=0;x
参考jsoup的官方文档将极大地提高您对如何使用org.jsoup.nodes.Element和org.jsoup.select.Elements的理解,这将对您有很大帮助。这是一个用于解析html文档的神奇库,我认为它不是抓取在线html页面的最佳库。但还是希望你能得到帮助。欢迎澄清有什么问题?系统是否打印出您期望的内容?你没有将“sNodes”设置为任何值。哦,我忘了提一下,它只是输出空值。我知道snodes没有被设置成任何东西:)嗨,我试过这个,但它似乎不起作用。这只是给了我一个错误