webMagic爬取Ajax中post请求详解
由于项目需求,需要在某电商网站上爬取一些商品数据,由于初次接触webMagic所以难免碰到了一些坑,在这里与大家分享一下。
1.对于静态html的数据爬取,我就不做详细介绍,因为获取不到真正有用的数据。
2.目前前端页面大多是js和Ajax渲染,增加了爬取难度,最开始参考别人的post带参请求并没有出现想要的数据,具体的核心代码(无效实例)如下:
@Override
public void process(Page page) {
Request request = new Request("http://www.szzfcg.cn/newmall/newGoodDisplay.do");
request.setMethod(HttpConstant.Method.POST);
List<NameValuePair> nvs = new ArrayList<NameValuePair>();
nvs.add(new BasicNameValuePair("method","listRefresh"));
nvs.add(new BasicNameValuePair("makeSupplyId","17873"));
nvs.add(new BasicNameValuePair("sqlOrderBy","synth ASC"));
NameValuePair[] values = nvs.toArray(new NameValuePair[] {
});
Map<String, Object> params = new HashMap<String, Object>();
params.put("NameValuePair",values);
request.setExtras(params);
page.addTargetRequest(request);
page.putField("价格", page.getHtml().xpath("//div[@class='goodlist_item']//span[@class='goodlist_price z']").toS