我试图通过JSoup从HTML中的h2标签中提取文本,但由于某种原因它只是不起作用。任何帮助将不胜感激,谢谢!
HTML代码:
<div id="searchTemplate" class="searchTemplate listLayout so_us_en" >
<div id="topDynamicContent">
<div id="s-result-info-bar" class="a-row a-spacing-base searchUndoAUIHacks"><div id="s-result-info-bar-content" class="a-row"><div class="a-column a-span8 a-spacing-none"><div class="s-first-column">
<h2 id="s-result-count" class="a-size-base a-spacing-small a-spacing-top-small a-text-normal">1-16 of 121 results for <span><span class="a-color-state a-text-bold">"rx 390"</span></span></h2></div>
Java代码:
Document doc = Jsoup.connect("https://www.amazon.com/s/ref=nb_sb_ss_c_1_6?url=search-alias%3Daps&field-keywords=rx+390&sprefix=rx+390%2Caps%2C166&crid=2MTUBA4KGNY06").get();
String link= doc.select("div.searchTemplate.listLayout.so_us_en")
.select("div[id= topDynamicContent]")
.select("div.a-row.a-spacing-base.searchUndoAUIHacks")
.select("div.a-row")
.select("div.a-column.a-span8.a-spacing-none")
.select("div.s-first-column")
.select("h2.a-size-base.a-spacing-small.a-spacing-top-small.a-text-normal").first().text();
答案 0 :(得分:0)
正如您在评论中告诉我们的那样,您正在使用Android应用。因此可能会有一些错误(我自己经历过)。
首先,你检查过,你是在一个单独的线程上运行? Android在主UI上为每个NetworkThread使用Threads有点讨厌。 有关参考,请参阅此处:https://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
您可以在代码中执行以下操作:
Thread threadNet = new Thread() {
public void run() {
Document doc;
try {
doc = Jsoup.connect("https://www.amazon.com/s/ref=nb_sb_ss_c_1_6?url=search-alias%3Daps&field-keywords=rx+390&sprefix=rx+390%2Caps%2C166&crid=2MTUBA4KGNY06").get();
String link= doc.select("div.searchTemplate.listLayout.so_us_en")
.select("div[id= topDynamicContent]")
.select("div.a-row.a-spacing-base.searchUndoAUIHacks")
.select("div.a-row")
.select("div.a-column.a-span8.a-spacing-none")
.select("div.s-first-column")
.select("h2.a-size-base.a-spacing-small.a-spacing-top-small.a-text-normal").first().text();
System.out.print(link);
} catch (IOException e) {
e.printStackTrace();
}
}
};
threadNet.start();
尽管如此,正如@ saka1029所提到的,代码通常是正确的,并且在Windows或Linux系统下运行良好。