我使用它来提取SPAN标签并告诉它有多少。
ublic class HtmlparserExampleActivity extends Activity {
String outputtext;
TagFindingVisitor visitor;
Parser parser = null;
private static final String TAG = "TVGuide";
private static final boolean D = true;
TextView outputTextView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
outputTextView = (TextView) findViewById(R.id.outputTextView);
if(D) Log.e(TAG, "+++ ON CREATE +++");
try {
Log.e(TAG, "In doInBackground");
parser = new Parser ("http://www.johandegraeve.net/android");
String tags[] = { "SPAN" };
visitor = new TagFindingVisitor(tags);
try {
parser.visitAllNodesWith (visitor);
outputtext = "there are " + visitor.getTags(0).length + " SPAN nodes.\n";
for (int i = 0;i<visitor.getTags(0).length;i++) {
outputtext = outputtext + visitor.getTags(0)[i].toHtml();
}
outputTextView.setText(outputtext);
} catch (ParserException e) {
if(D) Log.e(TAG, "Exception in +++ ON CREATE +++ \n" +
"parser.visitAllNodesWith (visitor) failed\n" +
e.toString());
}
} catch (ParserException e1) {
if(D) Log.e(TAG, "Exception in +++ ON CREATE +++ \n" +
"creation of parser failed\n" +
e1.toString());
} }
}
如何更改此内容以获取文本和图像,并在其wigdets中仅显示文本和图像?使用此代码?
编辑:像这样的html页面的标签是什么来获取文本和图像URL?
http://movies.ign.com/articles/100/1002569p1.html
EDIt:源代码。
public class HtmlparserExampleActivity extends Activity {
String outputtext;
TagFindingVisitor visitor;
Parser parser = null;
private static final String TAG = "TVGuide";
TextView outputTextView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
outputTextView = (TextView)findViewById(R.id.outputTextView);
String id = "main-article-content";
Document doc = null;
try {
doc = Jsoup.connect("http://movies.ign.com/articles/100/1002569p1.html").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("DOC", doc.toString().toString());
Elements elementsHtml = doc.getElementsByTag(id);
String[] temp1 = new String[99];;
int i =0;
for(Element element: elementsHtml)
{
temp1 = element.text();
i++;
outputTextView.setText(temp1[1]);
}
}
}
我试过这个,它没有用。也许我做错了什么。 textview中没有显示任何文字。但我在网页的调试中看到了一些标签。
答案 0 :(得分:4)
使用JSoup
解析器并按tag
解析元素。对于这些小型解析,JSoup非常高效和简单。
编辑:我不知道你的情况,但我会试一试:
Document doc = Jsoup.connect("someurl").get();
Log.i("DOC", doc.toString().toString());
Elements elementsHtml = doc.getElementsByTag("tr"); <--- here you specify the html tag where is the text is located
String[] temp1 = new String[99];
int i =0;
for(Element element: elementsHtml)
{
temp1[i] = element.text();
i++;
}
//After you have collected all the elements, you set the textview
更多:转到您想要的页面并查看页面源,您可以在那里搜索您想要的内容,然后查看您要使用的标签/类/ ID。
我已经为你解析了HTML:
try{
Document doc = Jsoup.connect("http://movies.ign.com/articles/100/1002569p1.html").get();
Elements elementsHtml = doc.getElementsByAttributeValue("id", "main-article-content");
for(Element element: elementsHtml)
{
Log.i("PARSED ELEMENTS:",URLDecoder.decode(element.text(), HTTP.UTF_8));
outputTextView.setText(element.text());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是您要解析的文字吗?
08-11 21:08:02.095:INFO / PARSED ELEMENTS(200):这是一个时代的结束,正如哈利波特与死亡圣器 - 第二部分本周开启一样,结束了史诗电影系列已经跨越八部电影和十年。为了纪念这一场合,我们决定再看一下这个系列中的精彩人物,再次排名前25位。自从我们几年前第一次运行它以来,你会注意到这个列表的一些调整和更改,如同我们检查并重新评估了我们所见过的所有角色。在我们揭示我们的选择之前,请快速了解选择过程...
答案 1 :(得分:1)
您可以尝试JSoup解析器。