gpt4 book ai didi

vb.net - 如何获取网页上显示的所有图像的 URL 列表?

转载 作者:行者123 更新时间:2023-12-05 08:01:36 30 4
gpt4 key购买 nike

我正在尝试使用 VB.NET (2010) 获取出现在特定网页上的每个图像的绝对 URL。到目前为止,我已经想出了如何获取图像标签内的所有 URL,就像这样......

        For Each SeparateImage As HtmlElement In WebBrowser1.Document.Images
ListBox1.Items.Add(SeparateImage.GetAttribute("src"))
Next

这很完美。但我想不通的是如何提取出现在 CSS 样式中的图像 URL。例如……

        background-image:url('image.jpg');

有谁知道一个简单的方法来做到这一点?我不仅需要从内联 CSS 代码中提取图像 URL,还需要从外部样式表中提取图像 URL。

我认为一种方法是获取整个 HTML 页面和相关 CSS 样式表的源代码,然后使用一堆字符串拆分和/或正则表达式解析出所有图像 URL。但是要找出每张图片的正确 绝对 URL 可能会变得相当复杂,因为我可能会遇到“相对”URL 路径的所有不同可能性。例如……

    background-image:url('image.jpg');
background-image:url('/image.jpg');
background-image:url('./image.jpg');
background-image:url('../image.jpg');
background-image:url('../otherdirectory/image.jpg');

所以...如果有这样的东西就太好了...

        For Each CSS_Style As HtmlElement In WebBrowser1.Document.Styles
ListBox1.Items.Add(CSS_Style.GetAttribute("background-image"))
Next

有谁知道我怎样才能完成这样的事情?或者有任何其他想法不涉及头脑 NumPy 的正则表达式和逻辑吗? :)

提前致谢!

最佳答案

如果您特别希望避免“头脑 NumPy 的正则表达式和逻辑”,您是否考虑过 HtmlAgilityPack

以下简短代码应显示从 bbc.co.uk 网站下载的 HTML 中包含的所有图像 URL。扩展此代码以解析来自 HTML 文档引用的任何 CSS 文件的图像链接应该不会太难。

Imports HtmlAgilityPack

Module Module1

Sub Main()
Dim mainUrl As String = "http://www.bbc.co.uk"
Dim doc As HtmlDocument
doc = New HtmlDocument()
Dim sourceString As String = New System.Net.WebClient().DownloadString(mainUrl)
doc.LoadHtml(sourceString)
For Each link As HtmlNode In doc.DocumentNode.SelectNodes("//img[@src]")
Dim linkAddress = GetAbsoluteUrl(link.Attributes("src").Value, mainUrl)
Console.WriteLine("Image: {0}", linkAddress)
Next
End Sub
'
Function GetAbsoluteUrl(partialUrl As String, baseUrl As String)
Dim myUri = New Uri(partialUrl, UriKind.RelativeOrAbsolute)
If (myUri.IsAbsoluteUri = False) Then
myUri = New Uri(New Uri(baseUrl), partialUrl)
End If
GetAbsoluteUrl = myUri
End Function

End Module

关于vb.net - 如何获取网页上显示的所有图像的 URL 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771614/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com