【问题标题】:Web Crawler C# .Net [closed]网络爬虫 C# .Net [关闭]
【发布时间】:2023-04-01 13:52:01
【问题描述】:

我不确定这是否真的被称为网络爬虫,但这就是我想要做的。

我正在使用 C# .Net 在 Visual Studio 2010 中构建一个程序。

我想查找所有具有相同第一部分的网址。

假设我有一个主页:www.mywebsite.com,还有几个子页面:/tab1/tab2/tab3

有没有办法获取以www.mywebsite.com 开头的所有网址的列表?

所以通过提供www.mywebsite.com,程序返回www.mywebsite.com/tab1www.mywebsite.com/tab2www.mywebsite.com/tab3等。

ps。不知道一共有多少个子页面。

--下午 12:04 编辑--

抱歉没有解释。

我想知道如何用 C# 编写一个爬虫来完成上述任务。

我只知道主网址www.mywebsite.com,目标是找到它的所有子页面。

-- 下午 12:16 编辑--

另外,主页没有链接,html基本是空白的。

我只知道子页面存在,但除了提供确切的网址外无法链接到它。

【问题讨论】:

  • 考虑细化您的问题,使其更具体地说明您在实施过程中遇到的问题。
  • 请弄清楚您的实际要求 - 您的问题范围从“如何从 url 中提取主机名(即使用 Url 类)”到如何使用正则表达式解析 HTML 来手动编写网络爬虫"。
  • 如果 hmtl 在 home oage 中为空白,您应该开始抓取具有链接或您可能想要关注的其他类型 html 标签的那个。 IE 你可以从 www.mywebsite.com/tab2

标签: c# web-crawler


【解决方案1】:

您好,您可以考虑解析该页面中的 html 内容,它的结构如何并不重要,您只需要考虑抓取链接标签,因此您首先需要做的是

1- 使用我推荐的 html 解析器 Html Agility Pack 是一个非常成熟的 html 解析器,它有很多特性,比如 linq to xml 等等。

2- 使用正则表达式解析文本,您将能够解析任何您想要的 html 标签,而无需涉及太多代码

3- 您需要考虑要抓取的链接的深度想象以下场景:

www.mywebsite.com/tab3 可以包含 www.mywebsite.com/tab3/link2 和 www.mywebsite.com/tab3/link3 等等,所以限制非常重要

4-您可以创建自己的 Windows 服务并使用 Web 请求进行爬取或尝试使用第三方的爬虫,这取决于您要做什么我没有使用它,但它我觉得还可以,也许值得一看。

Abot C# Web Crawler

编辑:

如果页面为空白,您可以使用 site:your domain.com 作为您的主要页面来抓取 google,然后从实际域而不是 google 中提取链接,或者尝试从该站点抓取 robots.txt。

【讨论】:

  • 您好,谢谢!我刚刚在您回答时更新了我的问题。 html是空白的,所以根本没有链接。我只知道子页面存在但没有指向它们的链接,我必须输入确切的网址。
  • @sora0419 如果您不知道子页面,那么您就无法猜测它们,我们也无法帮助您弄清楚它们是什么。找到一个没有空白页的网站的链接,然后尝试从那里去,或者通过搜索site:mywebsite.com 与谷歌检查,看看那里是否有任何链接。
  • @sora0419 +1 我同意,如果您不知道内部网址,您可以使用搜索引擎作弊,我看到的唯一潜在问题是该网站是否未在搜索引擎无法正常工作
  • 如果我想爬取作为搜索结果的动态网站怎么办。
【解决方案2】:

如果你抓取的只是内部链接,那么你只会找到网站自己链接的子页面。如果有任何特定链接以某种方式暴露给其他网站并且它们没有在内部链接,那么如果您只是抓取相关网站,您可能会错过它们。

有几种策略:

  • 作弊:如果您要查找turtlerescueleague.com 的所有子页面,那么只需谷歌site:turtlerescueleague.com 并抓取谷歌搜索结果。这通常会解决网站可能有页面不链接到自身但一些其他网站链接到它们的问题。
  • 构建爬虫:您需要从每个 HTML 页面中提取链接,丢弃所有外部链接,检查您是否已经访问过某个链接,将新链接排入要访问的页面队列中并访问页!不要忘记礼貌地做这一切,即遵守 robots.txt :)。

【讨论】:

    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多