我想知道是否有任何类似于PhantomJS的Java库.我想要实现的是能够模拟表单登录并从网页提交动作,以及也可以进行页面抓取.我知道jsoup可以进行页面抓取而不是页面自动化.
提前致谢!
干杯,亚历克斯
我正在尝试使用 Jsoup 解析网页并提取数据。但是链接是动态的,在显示详细信息之前会抛出一个等待加载的页面。所以 Jsoup 似乎处理的是等待页面而不是详细信息页面。有没有办法让这个等到页面完全加载?
我有资料
<input name="authenticity_token" type="hidden" value="aiUlw1Yh4W47lPQearSEdTkU0rhKpziZOweq5PMTV0Q=" />
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过Jsoup选择它。
Element input = doc.select("input[name=authenticity_token]").first();
String auth_token = input.attr("value");
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
我在字符串auth_token =处收到空指针异常。
Crime.ic.Main.main上的java.lang.NullPointerException(Main.java:2)
我究竟做错了什么?
我正在创建一个应用程序,使我能够从特定网站获取值到控制台.值来自一个<span>元素,我正在使用JSoup.
我的挑战与此错误有关:
获取URL时出错
这是我的Java代码:
public class TestSl {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://stackoverflow.com/questions/11970938/java-html-parser-to-extract-specific-data").get();
Elements spans = doc.select("span[class=hidden-text]");
for (Element span: spans) {
System.out.println(span.text());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是控制台上的错误:
线程"main"中的异常org.jsoup.HttpStatusException:HTTP错误提取URL.Status = 403,URL = Java Html解析器提取特定数据? at org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:590)org.jsoup.helper.HttpConnection $ Response.execute(HttpConnection.java:540)at org.jsoup.helper.HttpConnection.execute(HttpConnection)的.java:227)在org.jsoup.helper.HttpConnection.get(HttpConnection.java:216)在TestSl.main(TestSl.java:19)
我做错了什么,如何解决?
import java.io.IOException;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Node;
import org.jsoup.select.Elements;
public class listGrabber {
public static void main(String[]args) {
try {
Document doc = Jsoup.connect("https://play.google.com/store/apps/category/GAME_ACTION/collection/topselling_free").get();
int count = 0;
Elements elements;
String url;
ArrayList<String> list = new ArrayList<>();
do{
elements = doc.select("a[class^=title]").get(count).select("a[class^=title]");
url = "";
url = elements.attr("abs:title").replaceAll("https://play.google.com/store/apps/category/GAME_ACTION/collection/","");
url = url.replaceAll("®|™","");
url = url.replaceAll("[(](.*)[)]","");
list.add(url);
System.out.println(url);
count++;
}while (url!="" &&url!=null);
// String divContents =
// doc.select(".id-app-orig-desc").first().text();
// elements.remove("div");
} catch (IOException e) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
如上所示,我正在尝试从https://play.google.com/store/apps/category/GAME_ACTION/collection/topselling_free中 …