我不确定这是不是真的叫做网络爬虫,但这就是我想要做的。
我正在使用C# .Net在visual Studio2010中构建一个程序。
我想找到所有的网址,其中有相同的第一部分。
假设我有一个主页:www.mywebsite.com,并且有几个子页面:/tab1、/tab2、/tab3等。
有没有办法获得以www.mywebsite.com开头的所有urls的列表
因此,通过提供www.mywebsite.com,程序将返回www.mywebsite.com/tab1、www.mywebsite.com/tab2、www.mywebsite.com/tab3等。
ps。我不知道总共有多少子页面。
--下午12:04编辑--
抱歉,我没有解释清楚。
我想知道如何用C#编写一个爬虫来完成上面的任务。
我只知道主网址www.mywebsite.com,目标是找到它的所有子页面。
--下午12:16编辑--
而且,主页上没有链接,html基本上是空白的。
我只知道子页面是存在的,但是除了提供确切的urls之外,我没有办法链接到它。
发布于 2013-06-28 00:15:16
您好,您可以考虑解析该页面中的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请求来做爬虫,或者尝试使用来自第三方的爬虫,这取决于你想做什么的目的我还没有用过这个,但对我来说似乎没问题,也许值得一看。
编辑:
如果页面是空白的,你可以抓取谷歌网站:你的domain.com作为你的主要页面,然后从实际的域名提取链接,而不是谷歌,或尝试从网站抓取robots.txt。
发布于 2013-06-28 00:18:21
如果你抓取的都是内部链接,那么你只能找到网站自己链接的子页面。如果有任何特定的链接以某种方式暴露给其他网站,但它们不是内部链接,那么如果你只是爬行有问题的网站,你可能会错过它们。
有几种策略:
如果你正在寻找turtlerescueleague.com的所有子页面,那么只需
site:turtlerescueleague.com并抓取谷歌结果。这通常会照顾到的问题,网站可能有页面,它没有链接到自己,但一些其他网站链接到them.https://stackoverflow.com/questions/17347679
复制相似问题