递归扫描网站中的所有链接

时间:2015-04-28 08:34:46

标签: c# recursion web-scraping screen-scraping

我在C#中构建了一个刮刀,它从链接中抓取所有页面,以及其他数据,并尝试重新创建网站。我想让它递归扫描链接内部链接内的所有链接,直到处理完所有链接(我感兴趣)。

这是我的代码:

private void get_pages_2()
{
    // _repository.get_all_pages() gives me all the pages scraped so far (only from homepage)
    foreach (Page p in _repository.get_all_pages())
    {
        try
        {
            do_subpage(p.get_original_url());
        }
        catch (System.Net.WebException)
        {
        }
        catch (Exception e)
        {
            _frm.update_log("[!] Error creating subpage for: " + p.get_original_archive_url());
            _frm.update_log("[!] Error: " + e.ToString());
        }
    }
}
private void do_subpage(string link)
{
    List<Page_link> pages = new List<Page_link>();
    try
    {
        pages = get_pages(link);
    }
    catch (Exception)
    {
        return;
    }
    if (pages.Count == 0)
        return;

    // do_subpage(...);
    // should call again do_subpage(some_link), but got stuck here

}

函数do_subpage将链接作为参数,并使用get_pages函数获取我感兴趣的所有链接,现在我应该以某种方式在所有链接上调用do_subpage ......但不知道如何。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

我可以向您推荐一个来自this post的简单网页抓取工具。