加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 通过Visual Basic从网站检索数据

发布时间:2020-12-16 07:00:22 所属栏目:asp.Net 来源:网络整理
导读:我们从这个网站购买小工具,在自己的网页上提供每个零件的详细信息.示例: http://www.digikey.ca/product-search/en?lang=ensite=caKeyWords=AE9912-ND.我必须找到我们数据库中的所有零件,并将制造商和制造商零件编号值添加到其字段中. 有人告诉我,Visual Ba
我们从这个网站购买小工具,在自己的网页上提供每个零件的详细信息.示例: http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND.我必须找到我们数据库中的所有零件,并将制造商和制造商零件编号值添加到其字段中.

有人告诉我,Visual Basic有一种方法可以访问网页并提取信息.如果有人能指出我在哪里开始的正确方向,我相信我可以解决这个问题.

谢谢.

解决方法

如何使用HTMLAgilityPack(VB.Net)抓取网站

我同意htmlagilitypack是实现这一目标的最简单方法.它比仅使用Regex更不容易出错.以下是我如何处理刮擦.

下载htmlagilitypack * dll后,创建一个新的应用程序,通过nuget添加htmlagilitypack,并引用它.如果您可以使用Chrome,则可以检查该页面以获取有关您的信息所在位置的信息.右键单击要捕获的值并查找找到的表(稍微按照HTML说明).

以下示例将从“定价”表中提取该页面中的所有值.我们需要知道表的XPath值(该值用于指示htmlagilitypack查找的内容),以便我们创建的文档查找我们的特定值.这可以通过查找您的值所在的任何结构并右键单击复制XPath来实现.从此我们得到……

//*[@id="pricing"]

请注意,有时您从Chrome获得的XPath可能会相当大.您通常可以通过查找您的值所在的表的唯一内容来简化它.在此示例中,它是“id”,但在其他情况下,它可以很容易地成为标题或类或其他任何内容.

此XPath值查找id等于定价的内容,即我们的表.当我们进一步观察时,我们看到我们的值在tbody,tr和td标签内. HtmlAgilitypack与tbody不兼容,所以忽略它.我们的新XPath是……

//*[@id='pricing']/tr/td

这个XPath说在页面中查找定价ID,然后在其tr和td标签中查找文本.现在我们添加代码……

Dim Web As New HtmlAgilityPack.HtmlWeb
Dim Doc As New HtmlAgilityPack.HtmlDocument
Doc = Web.Load("http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND")
For Each table As HtmlAgilityPack.HtmlNode In Doc.DocumentNode.SelectNodes("//*[@id='pricing']/tr/td")

Next

要提取值,我们只需引用在循环中创建的表值,它是innertext成员.

Dim Web As New HtmlAgilityPack.HtmlWeb
Dim Doc As New HtmlAgilityPack.HtmlDocument
Doc = Web.Load("http://www.digikey.ca/product-search/en?lang=en&site=ca&KeyWords=AE9912-ND")
For Each table As HtmlAgilityPack.HtmlNode In Doc.DocumentNode.SelectNodes("//*[@id='pricing']/tr/td")
    MsgBox(table.InnerText)
Next

现在我们有弹出值的消息框…您可以切换消息框以填充arraylist或以任何方式存储值.现在,只需对您希望获得的其他表格执行相同的操作.

请注意,创建的Doc变量是可重用的,因此如果您想循环浏览同一页面中的其他表,则无需重新加载页面.这是一个好主意,特别是如果你提出很多请求,你不想抨击网站,如果你自动化大量的擦除,它会在请求之间留出一些时间.

刮痧真的很容易.这是基本的想法.玩得开心!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读