htmlunit抓取动态网页(.xmlmaven依赖代码 )
优采云 发布时间: 2021-11-13 19:17htmlunit抓取动态网页(.xmlmaven依赖代码
)
今天在使用jsoup做爬虫功能的时候发现jsoup只能抓取静态页面,对ajax和json动态生成的页面的支持不友好。
所以我尝试着把param和data header直接和request一起发送,希望能直接返回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();
}
}
}