试图从网站上抓取物品

时间:2014-07-20 05:13:03

标签: vb.net-2010

我试图创建一个简单的程序,从网站中提取文本项并将其添加到文本框中。我只是在试验,并认为我能做到但对我来说并不容易。我知道如何获取网站的完整源代码(如下)。它有一个我知道的ID,但它没有标签名称。因此,我不确定如何通过文本阅读,只保留id旁边的部分。或者更好的方法是使用Webbrowser工具,然后尝试获取类似的文本项。我只是想做更快的事情。我认为我的第一选择更好,因为它对计算机的内存更好。使用下面的代码我不知道下一步要添加什么?

Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("Website")
Dim response As System.Net.HttpWebResponse = request.GetResponse()
Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
Dim source As String = sr.ReadToEnd()

让我们说id是“名字”,例如。查看页面的来源,这是部件的外观(下图)。如何解析作为字符串的源并查找此部分,获取名称Brandon,并将其添加到文本框中。

<span id="name">Brandon</span>

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题。我不会写任何源代码,因为我很长一段时间没有使用Visual Basic。但是如果你谷歌如何做以下任何一项,你应该找到很多教程和文档。

正则表达式

在完整源代码上使用正则表达式可以帮助您通过搜索唯一的ID属性来查找元素。正则表达式有时可能非常慢,这就是为什么如果你必须对大部分文本执行大量搜索,应该避免使用它。

/<([a-z0-9]+)\sid="name"(.*?)>(.*?)<\// - &gt;没有经过测试,但可以帮到你

字符串排名

使用能够在字符串中找到子字符串位置的函数会很有用。在C中它是strstr而在PHP中它是strpos。这些类型的函数将为您提供字符串的起始位置,您的案例将在其中搜索id="name"。找到后,您将找到标签末尾的位置,然后找到该元素的结束标记。然后,您将执行一个子字符串函数,该函数将为您提供从位置X开始的文本,其长度为您指定的长度,即closing tag position - end of opening tag position

HTML / XML库

可能有大量的HTML / XML库将文档解析为某种对象或数组。然后,您可以遍历这些元素,直到找到您要查找的元素。其中一些库甚至可能具有元素ID的搜索功能,类似于JavaScript将如何为特定元素排序。

这些库可能很难开始使用,但如果您需要继续查找更多HTML元素,它们将来会为您提供很多选项。