【发布时间】:2020-01-11 19:43:00
【问题描述】:
我正在开发我的第一个简单项目,它是一个网络爬虫。但是我试图抓取的页面不是一个简单的静态 HTML 页面,而是在我检查页面时有一堆 Get/Post 请求。
所以我目前正在使用 HtmlUnit 和 Java 重现这些请求。
我正在尝试使用 HtmlUnit 和 Java 模拟这个 POST 请求。
public Page getCategoryKeywordRank(int catID) throws Exception{
initBrowser();
WebRequest webRequest = new WebRequest(new URL("https://datalab.naver.com/shoppingInsight/sCategory.naver"), HttpMethod.POST);
webRequest.setAdditionalHeader("authority", "datalab.naver.com");
webRequest.setAdditionalHeader("method", "POST");
webRequest.setAdditionalHeader("path", "/shoppingInsight/getCategoryKeywordRank.naver");
webRequest.setAdditionalHeader("scheme", "https");
webRequest.setAdditionalHeader("accept", "*/*");
webRequest.setAdditionalHeader("accept-encoding", "gzip, deflate, br");
webRequest.setAdditionalHeader("accept-language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7");
webRequest.setAdditionalHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
webRequest.setAdditionalHeader("origin", "https://datalab.naver.com");
webRequest.setAdditionalHeader("referer", "https://datalab.naver.com/shoppingInsight/sCategory.naver");
webRequest.setAdditionalHeader("sec-fetch-mode", "cors");
webRequest.setAdditionalHeader("sec-fetch-site", "same-origin");
webRequest.setAdditionalHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36");
webRequest.setAdditionalHeader("x-requested-with", "XMLHttpRequest");
webRequest.setRequestBody("cid=" + catID +
"&timeUnit=date" +
"&startDate=2019-12-10" +
"&endDate=2020-01-10" +
"&age=" +
"&gender=" +
"&device=" +
"&page=3" +
"&count=20");
Page page = browser.getPage(webRequest);
return page;
}
所以我尝试设置所有的标题和正文。但是当我运行这段代码时,我得到:
我对网络/浏览器的工作原理几乎一无所知,所以我现在很困惑。
我不知道我的整个概念是错的还是只是我的代码。
如果我必须找到另一种方法,那会是什么?
【问题讨论】:
标签: java web-scraping xmlhttprequest web-crawler htmlunit