Web爬网程序C#.Net

本文关键字:Net 程序 Web | 更新日期: 2023-09-27 18:20:05

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

我正在visual studio 2010中使用C#.Net.构建一个程序

我想找到所有具有相同第一部分的url。

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

有没有办法获得以www.mywebsite.com开头的所有URL的列表?

因此,通过提供www.mywebsite.com,程序返回www.mywebsite.com/tab1www.mywebsite.com/tab2www.mywebsite.com/tab3

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

--下午12:04编辑--

很抱歉没有解释。

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

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

--下午12:16编辑--

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

我只知道这些子页面存在,但除了提供确切的URL之外,没有任何方法可以链接到它。

Web爬网程序C#.Net

嗨,你可以考虑解析该页面中的html内容——它的结构如何并不重要——你只需要考虑获取链接标签,所以你首先需要做的是

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

2-使用正则表达式解析文本,这样你就可以解析任何你想要的html标签,而不需要太多的代码

3-你需要考虑你想要爬行的链接的深度想象以下场景:

www.mywebsite.com/tab3可能包含www.mywebite.com/tab3/link2和www.mywebrite.com/tab3/link3等等,因此限制非常重要

4-你可以创建自己的windows服务,并使用web请求进行爬网,或者尝试使用第三方的爬网程序,这取决于你想做什么的目的。我还没有使用这个,但对我来说似乎还可以,也许值得一看。

Abot C#Web爬网程序

编辑:

如果页面是空白的,你可以用site:yourdomain.com作为你的主要pag来抓取谷歌,然后从实际的域而不是谷歌提取链接,或者尝试从网站抓取robots.txt。

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

有几种策略:

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