gpt4 book ai didi

java - 任何 Javascript 都会阻止我的程序抓取此页面

转载 作者:行者123 更新时间:2023-12-01 15:00:58 25 4
gpt4 key购买 nike

    Document doc = Jsoup.connect("http://www.utah.edu/").get();
Elements lists = doc.select("ul");
for (Element list: lists) {
Elements li = list.select("li a");
if (li.size() > 0) {
ArrayList<String> anchors = new ArrayList<String>();
for (Element e : li) {
anchors.add(e.text());
}
System.out.println(anchors);
}
}

我正在尝试从 this page 获取由 ul 标记呈现的所有 html 列表。 。但它失败了。我怀疑页面中的脚本阻止我的程序执行此操作。

编辑:为了使我的问题更加简单,请考虑以下代码:

Document doc = Jsoup.connect("http://www.utah.edu/").get();
Elements lists = doc.select("ul");
System.out.println(lists.size());

输出:

0

最佳答案

一个可能的答案是,jsoup 发送的User-Agent header 使 utah.edu 认为它是机器人而不是浏览器。所以它返回其他页面内容。

org/jsoup/helper/HttpConnection.java中实现了get(),默认情况下不发送User-Agent header ,除非另有说明。

因此您需要使用userAgent()手动设置它。

示例,伪造 Chrome:

String ua = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11";
Document doc = Jsoup.connect("http://www.utah.edu/").userAgent(ua).get();

关于java - 任何 Javascript 都会阻止我的程序抓取此页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com