2013-08-07 17 views
5

私はhttp://forums.egullet.org/のメイン検索バーで簡単な投稿要求をしようとしています。 (これはひとつの例ですが、私は多くの人と一緒に使えるツールを作ろうとしています)。VBA HTTP投稿要求のパラメータを渡す

問題は、私が正しい方法で構造化/配置することができないということです。サーバーは私の要求を処理します。 (私は応答がありますが、ブラウザで検索すると結果が得られるのではなく、検索をやり直すようにと要求するページです。引数文字列はファイヤーバグからまっすぐに引き出されていますので、私はかなりですそれが正しいと確信しています。私はちょうど私が正しい場所に置いていないという印象を受けました/正しく構造化する/私が必要とするすべてを言っていますが、私は何を変えるべきか分かりません。 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 

答えて

5

は、私はあなたが持っているアンパサンドが必要だと思います疑問符

argumentString = "&search_term=eggs&search_app=forums" 
0それはより簡潔にし、その目的のページのタイトルを取得するには
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 
関連する問題