• 随手写了个京东发票助手


    因为需要批量下载京东的电子发票,随手用VB .NET写了个WinForm小工具,为了图省事通过 WebBrowser 结合 WebClient 实现了“半自动”的下载,一次要下载很多发票时能省不少力气。

    比较值得记下来的几个卖点:

    1.共享Cookie,实现 WebClient 下载 WebBrowser 中选定的链接

        ''' <summary>
        ''' 下载保存文件
        ''' </summary>
        ''' <param name="url"></param>
        Private Shared Sub saveFile(ByVal url As String, doc As HtmlDocument)
            Dim strCookies As String = doc.Cookie
            'If String.IsNullOrEmpty(strCookies) Then
            '    strCookies = CookieHelper.GetCookieString(url)
            'End If
            Try
                Using wc As New Net.WebClient
                    wc.Headers.Add("Cookie", strCookies) '共享 WebBrowser.Cookie
                    wc.DownloadFile(url, getFilename(url))
                End Using
            Catch ex As Exception
                Stop
            End Try
        End Sub

    2.查找页面元素,实现自动点击

        Private Shared Function findElement(ByVal doc As HtmlDocument, ByVal elementId As String) As HtmlElement
            Dim ret As HtmlElement = Nothing
            Try
                ret = doc.GetElementById(elementId)
            Catch ex As Exception
                Debug.Print("findElement err:{0}", ex.Message)
            End Try
    
            Return ret
        End Function
    
        Private Shared Function findElement(doc As HtmlDocument, ByVal href As String, ByVal innerText As String) As HtmlElement
            Dim ret As HtmlElement = Nothing
            For Each element As HtmlElement In doc.Links
                If element.InnerText = innerText AndAlso element.GetAttribute("href") = href Then
                    ret = element
                    Exit For
                End If
            Next
            Return ret
        End Function
        '通过 InvokeMember 触发点击动作
    _currElemet = findElement(wb.Document, url, "发票详情") If _currElemet IsNot Nothing Then _currElemet.InvokeMember("click") Else Debug.Print("findElement NOT FOUND " & url) End If

    源代码发布在:https://github.com/towerbit/JDReceipt

  • 相关阅读:
    LightOJ
    LightOJ
    51Nod 1021~1023 石子合并 (逐步加强版) 【dp】
    BZOJ1036 [ZJOI2008]树的统计Count 【树链剖分+线段树维护】
    51Nod 1677 treecnt 【树形dp+组合数学+逆元】
    逆元 【数学】
    51Nod 1705七星剑 【概率dp】
    BZOJ 1064 [Noi2008]假面舞会 【bfs】
    51 nod 1443 路径和树 【最短路径】
    BZOJ 1013 [JSOI2008]球形空间产生器sphere 【高斯消元】
  • 原文地址:https://www.cnblogs.com/towerbit/p/12564821.html
Copyright © 2020-2023  润新知