我希望在 C# 窗口窗体中开发一个 Web scraper。我想要完成的任务如下:
- 从用户处获取 URL。
- 在WINForms中的IE UI控件(嵌入式浏览器)中加载网页。
- 允许用户选择文本(连续、小(不超过 50 个字符))。从加载的网页。
- 当用户希望保留位置时(HTML DOM 位置)它必须被持久化到数据库中,以便用户在后续访问期间可以使用该位置来获取该位置中的数据。
假设加载的网站是一个价目表网站,并且报价不断变化,我们的想法是保留 DOM 层次结构,以便我下次可以遍历它。
如果所有 HTML 元素都有其 id 属性,我就能够做到这一点。在 id 为 null 的情况下,我无法完成此操作。
有人可以就此提出一个有效的想法(如果可能的话,提供最低限度的代码片段)。?
即使您可以分享一些在线资源,这也会很有帮助。
thanks,
vijay
一种方法是构建一堆标签/样式/id 直至您要选择的元素。
从你想要的元素开始,向上遍历到最近的id元素。这样您将摆脱大部分顶部标题等。然后构建一个要查找的序列。
Example:
<html>
<body>
<!-- lots of html -->
<div id="main">
<div>
<span>
<div class="pricearea">
<table> <!-- with price data -->
对于 example,您将在数据库中存储以下序列:[id=main],div,span,div,表格也许div[类=价格区域],表.
使用样式/类也可以用于创建您的路径。您可以选择查找标签、标签的属性或组合。您希望它尽可能准确,元素尽可能少,以使其稳健。
如果布局很少更改,这将使您每次导航到同一位置。
我还建议你也许使用HTML 敏捷包 http://www.codeplex.com/htmlagilitypack或者类似的 DOM 解析,因为 IE 控制很慢。
屏幕抓取很有趣,但很难 100% 覆盖所有页面。祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)