随手写了个京东发票助手

因为需要批量下载京东的电子发票,随手用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

posted @   树欲静·而风不止  阅读(953)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示