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/tab1
、www.mywebsite.com/tab2
、www.mywebsite.com/tab3
等
ps。我不知道总共有多少个子页面。
--下午12:04编辑--
很抱歉没有解释。
我想知道如何用C#编写一个爬虫来完成上述任务。
我只知道主url www.mywebsite.com
,目标是找到它的所有子页面。
--下午12:16编辑--
此外,主页面上没有链接,html基本上是空白的。
我只知道这些子页面存在,但除了提供确切的URL之外,没有任何方法可以链接到它。
嗨,你可以考虑解析该页面中的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:)