asp.net – 通过Visual Basic从网站检索数据
我们从这个网站购买小工具,在自己的网页上提供每个零件的详细信息.示例:
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变量是可重用的,因此如果您想循环浏览同一页面中的其他表,则无需重新加载页面.这是一个好主意,特别是如果你提出很多请求,你不想抨击网站,如果你自动化大量的擦除,它会在请求之间留出一些时间. 刮痧真的很容易.这是基本的想法.玩得开心! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- iis-7.5 – IIS 7.5 Siteminder不保护ASP.net MVC请求
- asp.net-mvc – WebSecurity.InitializeDatabaseConnection
- ASP.NET页面间传值总结
- asp.net – 将默认的MVC 4模板部署到Windows Azure
- 使用一个Asp.net成员数据库与多个应用程序单一登录
- ASP.NET在文本框中显示列表框中的选定项目
- asp.net – Internet Explorer 8超时太快页面POSTs
- 体系结构设计良好的ASP.NET WebForms站点示例
- 在文件ASP.NET C#中写入并且之后不锁定它们
- 清理ASP.NET提供的“杂乱”标记
- asp.net-mvc – 我的bin部署MVC4应用程序中的区域
- 如何在ASP.NET中构建灵活的Web表单
- asp.net-mvc – jqGrid和MVC3 – 添加模型验证
- asp.net-mvc – 有没有人能够或者至少试图将液体
- asp.net-mvc-3 – 任何好的样品开始使用Dapper?
- asp.net-mvc – 具有属性列表的ASP.Net MVC Html
- asp.net-mvc-3 – 无法在MVC3 HTML Helper中获取
- asp.net – 带LinqDataSource的DropDownList和一
- ASP.NET MVC的Model元数据与Model模板:将”List
- asp.net-mvc – 通用列表属性的必需属性