你好,我第一次使用 jsoup 并试图获取我的搜索查询的第一个 url 和标题。代码运行时没有任何错误,但由于某种原因没有显示任何内容。就像我出于某种原因在控制台中没有得到任何结果一样。有人可以解释发生了什么吗?谢谢 !
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class autoClickapp
{
public static void main (String args[]) throws IOException
{ String query = "Milky Way";
String url = "https://www.google.com/search?q=" + query + "&num=10";
Document doc = Jsoup
.connect(url)
.userAgent("Jsoup client")
.get();
Elements hTags = doc.select("h1, h2, h3, h4, h5, h6");
Elements links = doc.select("a[href]");
Elements h2Tags = hTags.select("h3");
for (int i=0; i < links.size(); i++) {
for (int j=0; j < h2Tags.size(); j++) {
System.out.println(links.get(0).text() + " " + h2Tags.get(0).text());
}
}
}
public static void print(String string) {
System.out.println(string);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是因为定义卡,它显示在任何常见搜索词的顶部。
所以我在浏览器中使用你的 useragent ( Jsoup client) 尝试了一些 CSS 选择器,并找到并减少了一个选择器:
#main > div > div > div > a
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试此选择器(适用于桌面用户代理):
#search > div div.g a:not([class]):not([ping])
Run Code Online (Sandbox Code Playgroud)
希望其中一个选择器能够工作
public static final String SELECTOR_1 = "#main > div > div > div > a";
public static final String SELECTOR_2 = "#search > div div.g a:not([class]):not([ping])";
Elements links = doc.select(SELECTOR_1);
for (int i=0; i < links.size(); i++) {
System.out.println(links.get(i).text())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |