是否可以从命令行或使用java代码获取当前在IE或chrome中打开的网页源?我相信必须有办法。如果是的话,我们怎样才能获取它的确切信息,因为chrome和IE支持多个标签。
我正在尝试处理来自数百个网页的内容,其中一些网页会以15秒的间隔自动刷新。有些人没有。
是的,我可以通过使用套接字或使用URLConnection类的实例来获取网页源代码。但是,它不提供浏览器的默认刷新功能。唯一的选择是多次点击URL,如果可以使用默认浏览器刷新功能,则可以避免这种情况。
此外,如果读者可以评论如何使用程序填写文本框并从浏览器提交请求,那将会很棒。谢谢。
答案 0 :(得分:1)
Java中有几个“抓取”框架。
我个人非常喜欢 JSoup ,因为它在代码中非常轻巧且紧凑。
// get the source of a website in just 1 line of code.
Document doc = Jsoup.connect("http://www.google.com").get();
// print all hyperlink paths.
Elements links = doc.select("a[href$=.html]");
for (Element lnk : links) System.out.println(lnk.attr("href"));
然而,它不会呈现javascript或类似的东西。它简单,快速但很愚蠢。
我认为你可能更喜欢使用 HtmlUnit ,这更像是一个看不见的webbrowser。它使您甚至可以模拟按钮上的点击事件,执行javascript,等等。您可以使其模仿Internet Explorer或Firefox。
答案 1 :(得分:1)
您可以使用Selenium WebDrivers - 用于桌面和手机浏览器的一组修改/附加组件,允许您从代码中完全控制它们 - 包括获取当前加载的页面的来源(使用{ {3}}),填写输入并提交表单,选择文字,点击某些点,以及几乎所有其他可以在浏览器中完成的事情。
答案 2 :(得分:0)
您可以使用简单的HTTP客户端,以便使用commons-httpclient获取您的页面源。
设置库后,可以使用以下代码:
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url); // http://www.google.com
client.executeMethod(method);
String result = method.getResponseBodyAsString();
在结果变量中,您将获得页面的源代码,在本例中为Google的主搜索页面。所以你可以随心所欲。例如,您可以使用Java Thread继续刷新页面,并根据结果执行任何操作。
上找到更多信息答案 3 :(得分:0)
Wget for Windows可能会有所帮助,如果你的意思是“终端”而不是特别是DOS操作系统。还有一些名为bitsadmin的东西(我不熟悉),我也在搜索中找到了这个:Jaunt - Java Web Scraping & Automation,如果这有帮助的话。我不是一个Java人,但希望能指出你正确的方向。