爬取基于Flex技术的网站数据
Flex技术是网站运用flash方法与客户端进行数据通信,数据的格式可以是txt,json或amf等。
AMF是一种二进制编码方式,其在flash传输效率高,以农业信息网数据为例,爬取的方式与一般ajax分析相同。通过抓包分析请求头和响应数据,然后构造请求、接受返回数据。
github原文地址
下面我以中国农产品批发市场每日价格行情http://jgsb.agri.cn/controller?SERVICE_ID=REGISTRY_JCSJ_MRHQ_SHOW_SERVICE&recordperpage=15&newsearch=true&login_result_sign=nologin为例来分析爬取方法
请求包分析
目前Chales抓包工具能够支持将AMF编码解析成明文形式,便于我们分析。请求截图如下:
图中可以看到请求的body包含一个com.itown.kas.pfsc.report.po.HqPara对象和四个参数,结合网页可知为flash上的四个选择菜单,可以选择省份和批发市场名称等。对此结合pyawf的文档可以写出构造请求函数如下:
from urllib import request
import uuid
import pyamf
import json,datetime
from pyamf import remoting
from pyamf.flex import</