如上图所示,要扣除里面的表格数据,该怎么弄呢?思路是先把整个表格抠出来,然后按照tr进行分割,存到数组,然后一个个遍历进行正则匹配,最后输出结果转化为json格式,供前台调用!
var $url; var $pattern_find; var $pattern_replace; var $timeout; /**
* @param url 需要抓取的url链接
* @param pattern_find 需要匹配的字段正则表达式
* @param pattern_replace 需要替换的字符正则表达式
* @param timeout 设置超时阻断程序执行,默认10秒,这个字段一般留空
*/
function __construct($url, $pattern_find, $pattern_replace, $timeout) {
$this->url = $url; $this->pattern_find = $pattern_find; $this->pattern_replace = $pattern_replace; $this->timeout = 10;
} // 获取网页源代码
function getHtml() {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'); //模拟浏览器,防止被拦截
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout); $html = curl_exec($ch); // 匹配需要的大的字段,例如一段table,取出来之后再一行一行做匹配
preg_match($this->pattern_find, $html, $match); //判断是否有传入替换的正则表达式,如果有就进行匹配替换,并返回替换后的字符串,如果没有,则直接返回匹配出来的大段,例如整个table表格
// echo "
";";
// print_r($match);
// echo "
";"; exit;
print_r($strs); echo "