excelvba抓取网页数据(如何获取百度查询结果——抓取网站数据(组图) )
优采云 发布时间: 2022-04-11 16:20excelvba抓取网页数据(如何获取百度查询结果——抓取网站数据(组图)
)
当用户通过 Web 浏览器登录到 Internet 时,他们将向 Web 服务器请求一个网页。服务器收到请求后,会做出响应,将设置好的页面文档发送到网页浏览器的显示界面。这是一个完整的请求和处理网页的过程。网页抓取就是在代码过程中尝试模拟这种交互过程。
首先,在 Excel 中使用 VBA 来捕获 网站 数据。
其次,无论是使用 Python、Java 还是 VBA 进行网页抓取,都需要对 HTTP 协议、HTML(HyperTextMarkup Language,超文本标记语言)和 DOM(Document Object Model,文档对象模型)等知识有一个初步的了解。
此外,还介绍了一个软件 Fiddler。网页抓取的成功需要准确真实的URL,模拟正确的请求包并分析服务器响应请求后返回的信息,而这些数据可以通过Fiddler软件获取。通过 Fiddler 很容易找到内容所在的 URL。
今天简单介绍一下如何获取百度查询结果——抓取百度查询结果的数量。
1.首先打开Fiddler软件,在浏览器中打开百度网站,搜索关键词“网络爬虫”。
2.在Fiddler软件中搜索“百度为你找到相关结果”,如下图。
3.点击对话框中第一个*敏*感*词*数据,点击右侧Request框中的【Raw】按钮,可以查看发送到该请求的HTTP报文的详细数据。第一行是请求行,内容如下。
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】选项卡,可以查看多个参数的Names和对应的Values。百度搜索的关键词“网络爬虫”位于参数wd下,如下图所示。所以 URL 可以缩短如下。
网络爬虫
4.点击Request框中的【Raw】按钮查看响应消息的详细数据,点击框右下角的【View in Notepad】按钮将相关数据转换成记事本文件。在记事本中,搜索关键词“百度为你找到相关结果”,即可查看收录该关键词的相关数据。
示例代码如下。
<p>Sub WebQueryBaidu()
Dim objXMLHTTP As Object
Dim strURL As String
Dim strText As String
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
With objXMLHTTP
strURL = "https://www.baidu.com/s?wd=网络爬虫"
.Open "GET", strURL, False
.send
strText = .responseText
End With
Range("a1") = "百度:excelhome 结果个数为:"
Range("a2") = Split(Split(strText, "百度为您找到相关结果")(1), "