# vfp网抓基本步骤
用户通过网络浏览器登陆互联网时,会向Web服务器请求某个网页页面,服务器收到请求后会做出响应,将设定好的页面文档发送到网络浏览器的显示界面,这便是一个完整的网页请求和处理的过程。网抓是尽量在代码过程中模拟这个交互过程。
首先,利用VFP可以抓取网站数据。
其次,无论是利用Python、java还是VFP进行网抓,都需要对HTTP协议、HTML(Hyper Text Markup Language, 超文本标记语言)和DOM(Document Object Model,文档对象模型)等知识有初步了解。
另外,介绍一款软件Fiddler,网抓的成功需要准确真实的网址,模拟正确的请求报文及分析服务器响应请求后返回的信息,而这些数据可以通过Fiddler软件获得。通过Fiddler可以方便查找内容所在的网址。
今天先简单介绍下如何获取百度查询结果——抓取百度查询结果的个数。
1.首先打开Fiddler软件,在浏览器中打开百度网址,搜索关键字"网络爬虫"。
2.在Fiddler软件中搜索"百度为您找到相关结果",如下图所示。
3.单击会话框中第1条呈现黄色的数据,在右侧Request框中单击【Raw】按钮,查看发送请求的HTTP报文的详细数据。其中第1行为请求行,内容如下所示。
GET https://www.baidu.com/s?wd=%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB&rsv_spt=1&rsv_iqid=0xf8d676de000321a4&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=12&rsv_sug1=16&rsv_sug7=101&rsv_sug2=0&inputT=5516&rsv_sug4=6639 HTTP/1.1 开头的GET是请求方法字段,末尾的HTTP/1.1是协议版本字段,剩余的信息则是URL字段。由于请求行使用的是GET方法,所以请求数据附在URL之后,以"?"分隔URL和请求数据,其中多个参数之间使用"&"连接。
尽管传输数据的参数众多,但并非全部参数都是必需的。选择Request框中的【WebForms】选项卡,可以查看多个参数的Name及对应的Value,其中百度搜索的关键字"网络爬虫"位于参数wd下,如下图所示。因此可以将URL简洁如下。
https://www.baidu.com/s?wd=网络爬虫
4.在Request框中单击【Raw】按钮,可以查看响应报文的详细数据,单击该框右下角的【View in Notepad】按钮,将相关数据转换为记事本的文件形式。在记事本中,搜索关键字"百度为您找到相关结果",可以查看含有该关键字的相关数据。
示例代码如下。
objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
With objXMLHTTP
strURL = "https://www.baidu.com/s?wd=网络爬虫"
.Open("GET", strURL, .f.)
.send()
strText = .responseText
EndWith
?"百度:结果个数为:"
?STREXTRACT(strText,'<span class="hint_PIwZX c_font_2AD7M">','</span>')
2
3
4
5
6
7
8
9
10
11
程序运行结果如下图所示。