我尝试通过XMLHTTP对象发送表单数据以获取网页。
我使用的是Excel 2010。
网站名称为http://espn.go.com/mlb/players。
我试图通过搜索框搜索某个球员(如费斯特)。
下面是表单标记之间的源代码。
<form id="searchBox" name="searchBox" action="http://search.espn.go.com/results" method="get" accept-charset="utf-8" style="color: #999999;">
<div class="clearfix">
<input autocomplete="off" class="text" type="text" placeholder="Search" name="searchString" id="searchString" />
<input type="hidden" name="page" id="page" value="null" />
<input type="hidden" name="fromForm" value="true" />
<input class="submit" type="submit" value="" />
</div>
</form>
我的密码。
Sub SearchPlayer()
Dim xml As MSXML2.ServerXMLHTTP
Dim search, url As String
search = "searchString=Fister&page=null&fromForm=true"
url = "http://espn.go.com/mlb/players"
Set xml = New MSXML2.ServerXMLHTTP
xml.Open "POST", url, False
xml.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xml.send search
MsgBox xml.responseText
Set xml = Nothing
End Sub
2条答案
按热度按时间bzzcjhmw1#
这段代码对我很有效:
(假设您的系统上有MSXML 6.0-- msxml6.dll位于本机system32文件夹中)
如上所述,表单使用GET请求,因此您可以使用ACTION属性并将INPUT标记的值附加到单个字符串中,如下所示:
http://search.espn.go.com/results?searchString=Fister&page=null&fromForm=true
我对Sub进行了函数化,这样你就可以用不同的玩家名调用它来抓取每一页。当然,如果你希望用有空格的玩家名调用它(here's one),你就需要一个urlencode函数。
sbtkgmzw2#
如果我没有遗漏任何内容,则单击
Search
按钮后,URL
将显示如下:http://www.espn.com/mlb/players?search=Fister它是
GET
请求,并且它返回HTML
,然后可以例如使用MSHTMLDocument
的标准搜索函数来搜索HTML
,例如: