我正在尝试在http://forums.egullet.org/的主搜索栏上发送简单的帖子请求。 (这是一个例子,但我正在尝试构建一个可以与许多人一起工作的工具。)
问题在于我似乎无法找到构造/放置参数的正确方法,以便服务器处理我的请求。 (我确实得到了回复,但它只是一个页面要求我再次尝试搜索,而不是我在浏览器中搜索时得到的结果。参数字符串是直接从firebug中提取的,所以我很公平确定它是正确的。我只是觉得我没有把它放在正确的位置/正确地构造它/说出我需要的一切,但我不知道要改变什么。值得注意的是我以前有过这是通过编辑Internet Explorer对象的DOM来实现的,但我正在尝试切换到XMLHTTP,因为它更快/更可靠。感谢您的帮助!
Sub httpPost()
Dim XMLHTTP
Dim result As String
Dim argumentString
argumentString = "?search_term=eggs&search_app=forums"
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
XMLHTTP.Open "POST", _
"http://forums.egullet.org/index.php?app=core&module=search&do=search&fromMainBar=1", False
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
XMLHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
XMLHTTP.send argumentString
result = XMLHTTP.responsetext
Set XMLHTTP = Nothing
End Sub
答案 0 :(得分:5)
我认为你需要一个带有问号的&符号
argumentString = "&search_term=eggs&search_app=forums"
答案 1 :(得分:0)
为了使其更简洁并获得该目标页面的标题:
Sub httpPost()
Dim http As New XMLHTTP60, html As New HTMLDocument
Dim post As Object, argstr As String
argstr = "type=all&q=eggs"
With http
.Open "POST", "https://forums.egullet.org/search/?", False
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
.send argstr
html.body.innerHTML = .responseText
End With
For Each post In html.getElementsByClassName("ipsStreamItem_title")
With post.getElementsByTagName("a")
If .Length Then Row = Row + 1: Cells(Row, 1) = .Item(0).innerText
End With
Next post
End Sub