让我解释一下:我想制作一个使用在线费率的货币转换器表格,以便它是最新的。我计划使用内置货币转换功能的Google,输入:
[任何货币符号] [任何数字金额] + + [任何货币符号]
我知道如何格式化我要搜索的网址,以及我希望的范围(其文本)在哪个类,我只是不知道如何以编程方式取出结果并以我的形式使用。
以下是“£1 in $”转换中适用的 HTML 代码:
<div class="vk_ans vk_bk curtgt" style="padding-bottom: 4px">
<span style="word-break:break-all">1.68</span>
<span>US Dollar</span></div>
该课程被称为:
vk_ans vk_bk curtgt
范围文本是班级中的第一个(包含“1.68”的文本)
顺便说一下,我完全理解为此目的有更易于使用的API网站,但我想使用Google,因为:答案 0 :(得分:0)
我个人使用http://www.nuget.org/packages/ScrapySharp/2.2.63进行html-scraping,它允许使用CSS3选择器来很好地抓住你需要的东西。
在你的情况下,它就像这样简单:
Dim doc as HtmlAgilityPack.HtmlDocument = new HtmlAgilityPack.HtmlDocument()
doc.LoadHtml(GetRawHtml(theUrl))
Dim body as HtmlNode= doc.DocumentNode.SelectSingleNode("//body")
Dim yourSpan as HtmlNode = body.CssSelect(".vk_ans.vk_bk.curtgt").First()
dim yourValue as Double = Double.Parse(yourSpan.InnerText)
Function GetRawHtml(url As String) As String
Dim html As String = String.Empty
Dim request As WebRequest = WebRequest.Create(url)
Try
Using response As WebResponse = request.GetResponse()
Using data As Stream = response.GetResponseStream()
Using sr As New StreamReader(data)
html = sr.ReadToEnd()
End Using
End Using
End Using
Catch e As Exception
yourLogger.Error("WebRequest failed at url `{0}`. Error: {1}", url, e.ToString())
End Try
Return html
End Function
此外,如果请求很慢,您可能希望将代理属性更改为空,请参阅此处:HttpWebRequest is extremely slow!