newlisp如何抓取网页

手册/FAQ (479) 2016-04-28 13:58:02

如果是HTTP协议,很简单,直接用get-url函数

如果是HTTPS协议,就需要用到curl,可以通过exec的方式调用curl命令登录,当然需要有合法的用户名和密码才行。然后分析返回的结果中的cookie,一般得到session id后发

回去,模拟用户访问各个页面,获得页面结果。

如果对方网页是gb2312编码, newlisp不能直接分析内容,需要用下面的命令转换成utf-8编码的文件,再读取回来使用。

下面是示例代码用于HTTP页面。

1.(define (Reader:filter)  
2.  (set 'r (get-url (self 1)))  
3.  (if (file? "page")  
4.  (delete-file "page"))  
5.  (if (file? "page2")  
6.  (delete-file "page2"))  
7.  (append-file "page" r)  
8.  (exec "iconv -f GB2312 -t utf-8 page > page2")  
9.  (set 'r (read-file "page2"))  
10.  (regex "your search pattern" r)  
11.  (set 'a $1)  
12.  (set 'b $2)  
13.  (list a b))  

只需要在regex一行换上自己的search pattern就可以搜索网页了。

THE END