gpt4 book ai didi

c# - 在 C# 中实现动态网络爬虫的逻辑

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:04 25 4
gpt4 key购买 nike

我希望在 C# 窗口窗体中开发 Web 抓取工具。我想要完成的事情如下:

  1. 从用户那里获取 URL。
  2. 在 WINForms 的 IE UI 控件(嵌入式浏览器)中加载网页。
  3. 允许用户选择一个文本(连续的、小的(不超过 50 个字符))。从加载的网页。
  4. 当用户希望保留位置(HTML DOM 位置)时,必须将其保留到数据库中,以便用户可以使用该位置在他的访问期间获取该位置的数据随后的访问。

假设加载的网站是一个价目表网站,并且报价不断变化,我的想法是持久化 DOM 层次结构,以便我下次可以遍历它。

如果所有 HTML 元素都有它们的 id 属性,我就能做到这一点。在 id 为 null 的情况下,我无法完成此操作。

有人可以就此提出一个有效的想法(如果可能的话,一个最低限度的代码片段)。?

这会很有帮助,即使您可以共享一些在线资源。

谢谢,

维杰

最佳答案

一种方法是构建一堆标签/样式/id 直到您要选择的元素。

从你想要的元素开始,向上遍历到最近的id元素。这样您将摆脱大部分顶部 header 等。然后构建一个序列来查找。

例子:

<html>
<body>
<!-- lots of html -->
<div id="main">
<div>
<span>
<div class="pricearea">
<table> <!-- with price data -->

例如,您将在数据库中存储以下序列:[id=main],div,span,div,table 或者 div[class=pricearea],table.

也可以使用样式/类来创建您的路径。您可以选择查找标记、标记的属性或组合。您希望它尽可能准确,元素越少越好。

如果布局很少改变,这会让您每次都导航到相同的位置。

我还建议您使用 HTML Agility Pack或类似的 DOM 解析,因为 IE 控件很慢。

屏幕抓取很有趣,但很难 100% 抓取所有页面。祝你好运!

关于c# - 在 C# 中实现动态网络爬虫的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2122160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com