爬虫中ajax获取数据的方式(get)
在爬数据的时候,有的时候发现driver.get("body").get(0).getText()就不包含所需要的数据图表,这种情况大多是需要查看元素--网络,找到能返回json字符串或者html(查看xhr或者html)。然后模拟一个请求,以图获取它的响应。以https://premium.usnews.com/best-graduate-schools/top-business-schools/mba-rankings为例。
在火狐中打开,查看元素,网络,html中,有一个返回了整个页面的请求,就是我们需要的东西。仿照这个请求头,构造静态代码块,模拟请求,如下:
public static Map<String, String> headers = null;
static {
headers = new HashMap<String, String>();
// headers.put("Host", "premium.usnews.com");
headers.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/56.0");
headers.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
headers.put("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");
headers.put("Accept-Encoding", "gzip, deflate, br");
headers.put("Referer", "https://premium.usnews.com/");
headers.put("Connection", "keep-alive");
headers.put("Upgrade-Insecure-Requests", "1");
}
public static String getAjax(String url)
{
String content = JsoupHelper.get(url, null, "utf-8", headers);
return content;
}
再构造一个主函数,调用这个方法,返回的内容就是整个页面的内容,需要进一步获取资料,就需要对字符串进行切分处理了。
楼主的心得就是比如 要获取table 先用</table切分,而不是直接用table切分,这样带来的标签零碎实在是,绝对不是强迫症看不下去!!!