2008年11月12日

VBでMT(Movable type)に自動でログイン

MTに自動でログインするためのプログラムです。


MTはクッキーが効くのでその有効範囲内なら、ログインを自動的にしますが
しかし


クッキーが切れていたときは自分でユーザー名とパスワードを入れてログインします

それを自動でしてくれる部分です。


        'IEを開く Internet Explorerを起動します
        Dim objIE as Object
        objIE = CreateObject("InternetExplorer.application")
        objIE.visible = True

        'URLにMTのURLを入れます。
        Dim URL = "http://MyMT.com/mt/mt.cgi"

        '指定したMTのURLにアクセスします
        objIE.Navigate(URL)

        Do While objIE.Busy
            DoEvents()
        Loop

        Do While (objIE.document.readyState <> "complete")
            DoEvents()
        Loop

        Do While objIE.readyState <> "4"
            DoEvents()
        Loop

        Sleep(1000)


        'objDocument にIEの開いたページを指定します
        objDocument = objIE.Document
        HTML = objDocument.documentelement.innertext


        'もし、Movable Typeからログアウトしました という文字があったら、ログインするためにパスワードと、ユーザー名を入力して、チェックボックスも恩にします
        If InStr(HTML, "Movable Typeからログアウトしました") > 0 Or InStr(HTML, "サインイン") Then
            objForm = objDocument.Forms(0)
            objForm.UserName.Value = "MTUserName"
            objForm.Password.Value = "MTPassWord"

            objForm = objDocument.Forms(0).elements("remember")
            objForm.Checked = True

            objForm = objDocument.Forms(0)
            objForm.submit()

            MT.WaitIE(objIE)
        End If

ラベル:Movable Type MT
posted by kiyo at 19:06| Internet Explorer | このブログの読者になる | 更新情報をチェックする

2008年11月11日

URLからページを取得してHTMLタグを解析

前回作った、YahooTitleSearchにキーワードを入れて
そこから

キーワードが入ったタイトルのページは何ページインデックスされているか
返す


関数です

長いですが
できは??


ちゃんと値が取れれば値を返して

うまく取得できなかったら
-1
を返します


Internet Explorerは使ってなかたです
使った例はまた書きますね

Public Function YahooTitleSearch(ByVal Keyword As String) As Long
        'Yahoo Web 検索からキーワードにintitle:で検索 0は正常 -10 はHTML処理かYahooのエラー -1 はhttp取得エラー
        Dim URL As String = YahooAPI.URLTitleSearchURL(Keyword)
        Dim client As New WebClient
        Dim HTML As String
        Dim Count As Long
        Dim Word As String
        Dim HTMLCount As Integer
        Dim AllHTMLCount As Long


        Try
            'HTTP Server からストリームを取得
            URL = YahooAPI.URLTitleSearchURL(Keyword)


            Dim wc As WebClient = New WebClient()

            Dim st As Stream = wc.OpenRead(URL)

            Dim enc As Encoding = Encoding.GetEncoding("EUC-JP")
            Dim sr As StreamReader = New StreamReader(st, enc)
            HTML = sr.ReadToEnd()
            sr.Close()

            st.Close()
            'Return HTML

            Word = "</strong>件目 / 約<strong>"
            HTMLCount = InStr(HTML, Word)
            AllHTMLCount = Len(HTML)

            '取得したHTMLの処理
            If InStr(HTML, "次の条件に一致する情報は見つかりませんでした。") > 0 Then
                Count = 0
            ElseIf HTMLCount > 0 Then

                '検索結果の例
                '</strong>件目 / 約<strong>267,000</strong>件
                '</strong>件目 / 約<strong>の右側の文字をHTMLにセット

                HTML = HTML.Replace(Left(HTML, HTMLCount - 1), "")
                HTML = HTML.Replace("</strong>件目 / 約<strong>", "")

                '</strong>件 の左側の文字を取得
                Word = "</strong>件"
                HTMLCount = InStr(HTML, Word)
                HTML = Left(HTML, HTMLCount - 1)

                '267,000 の,を消す
                HTML.Replace(",", "")
                Count = CLng(HTML)
            Else
                Count = -10
            End If

        Catch ex As Exception
            Count = -1
        End Try

        Return Count
    End Function

ラベル:HTML
posted by kiyo at 18:25| Internet Explorer | このブログの読者になる | 更新情報をチェックする

2008年11月10日

IEでアクセスするURLを作る

Internet Explorer(IE)をVBから動かすために最初にURLを作る必要がある。


ここでは、YahooでKeywordをいれて

そのKeywordがタイトルに含まれているページがどのくらいあるか
測定してみるということをしてみたい。

 
「ほしのあき」で調べたら


「ほしのあきの水着」とか


「大好きほしのあき」


などというページがどのくらいあるか調べるために


YahooのURLを作成しよう


"http://search.yahoo.co.jp/search?p=" & Keyword & "&ei=UTF-8"


とURLEncodeしたKeywordをいれて


あとは


文字コードはFTF-8だよ


といってあげるだけでよい


  Public Function URLTitleSearchURL(ByVal Keyword As String) As String


        'Yahoo web search からintitle: で検索する

        Dim APIID As String = "YahooAPIID"

        Dim YahooWebURL As String
        Keyword = Trim(Keyword)

        'intitle:ほしのあき とすることで、ほしのあきをタイトルに持つページがでてくる
        Keyword = "intitle:" & Keyword
        Keyword = Keyword.Replace(" ", " ") '全角スペースを半角にする
        Keyword = Keyword.Replace(" ", " intitle:")
        Keyword = System.Web.HttpUtility.UrlEncode(Keyword)
        YahooWebURL = "http://search.yahoo.co.jp/search?p=" & Keyword & "&ei=UTF-8"

        Return YahooWebURL
    End Function

ラベル:Internet Explorer IE URL
posted by kiyo at 20:20| Internet Explorer | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。