htmlunit抓取动态网页(.xmlmaven依赖代码 )
优采云 发布时间: 2021-09-30 14:22htmlunit抓取动态网页(.xmlmaven依赖代码
)
今天,当使用jsoup作为爬虫程序时,我发现jsoup只能抓取静态页面,这对支持Ajax和JSON动态生成的页面不友好
因此,我尝试将param和data header与请求一起直接发送,希望直接返回JSON数据,但可能无法成功,因为网站接口不支持它
在尝试其他方法后,从互联网上发现htmlunit可以用来模拟浏览器,生成动态网页,然后用jsoup解析生成的动态网页
下面是pom.xml Maven依赖项代码
下面是Java代码
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
public class JsoupTest {
public static void main(String[] args) {
queryDocument("北斗");
}
public static void queryDocument(String documentName){
WebClient browser = new WebClient();
browser.getOptions().setCssEnabled(false);
browser.getOptions().setJavaScriptEnabled(true);
browser.getOptions().setThrowExceptionOnScriptError(false);
String url = "http://oar.nstl.gov.cn/Paper/Search?searchKey="+documentName+"&x=0&y=0";
try {
HtmlPage htmlPage = browser.getPage(url);
browser.waitForBackgroundJavaScript(3000);
Document document = Jsoup.parse(htmlPage.asXml());
Element paper = document.getElementById("paper");
System.out.println(paper);
} catch (IOException e) {
e.printStackTrace();
}
}
}