欢迎光临
我们一直在努力

Jumony快速抓取网页

Jumony是一个开源项目,已经有三年的历史了,在这三年中,秉承提供给.NET程序员完整的HTML掌控能力,Jumony历经无数次的改进,终于进入了一个新的阶段。Jumony Core 3是一个真正意义上的HTML引擎。

Jumony Core 3目前已经在NuGet上发布,请直接在NuGet包管理器中搜索 Jumony Core ,即可下载。

目前源代码存放咋GitHub ,源码地址: https://github.com/Ivony/Jumony 。我测试使用的是Visual Studio 2017 ,测试网页为博客园。

下面介绍使用方法:

一、在新建项目后,需要将Jumony添加到项目中,你可以下载源码使用,也可以在NugGet 中 搜索 Jumony Core 将其添加到项目中并且后自动添加所需的引用。

二、添加引用之后,即可写项目代码。(此处代码为获取 新笔趣阁的小说 天域苍穹)

@using Ivony.Html;
@using Ivony.Html.Parser;
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
    var htmlSource = new JumonyParser().LoadDocument("http://www.xxbiquge.com/9_9187/").Find("#list a");
}
<div class="row" style="margin-top:80px;">
    <article class="excerpt">
        <header>
            <h2><a>天域苍穹</a></h2>
        </header>
        <p class="note">
            笑尽天下英雄,宇内我为君主!
            万水千山,以我为尊;八荒六合,唯我称雄!
            我欲舞风云,凌天下,踏天域,登苍穹!谁可争锋?!
            诸君可愿陪我,并肩凌天下,琼霄风云舞,征战这天域苍穹?!
        </p>
    </article>
</div>
<link href="~/Content/bookindex.css" rel="stylesheet" />

<div class="row">
    <div class="indexbox">
        <h2>章节目录</h2>
        <div class="index_area">
            <div class="list">
                <ul class="block_ul block_ul_top">
                    @foreach (var item in htmlSource)
                    {
                        <li><a href="@(Url.Action("Details",new {url= "http://www.xxbiquge.com" + item.Attribute("href").AttributeValue }))" target="_blank"><b class="title">@item.InnerText()</b></a></li>
                    }

                </ul>
            </div>
        </div>
    </div>
</div>

效果图:

三、下面就是要在点击上图从笔趣阁抓取的章节目录之后,再显示章节内容(以原url作为参数传递到下个action)

代码:

@using Ivony.Html;
@using Ivony.Html.Parser;
@{
    Layout = null;
    var htmlSource = new JumonyParser().LoadDocument(Request.QueryString["url"]);
    var title = htmlSource.Find(".bookname h1").FirstOrDefault().InnerText();
    var content = htmlSource.Find("#content").FirstOrDefault().InnerHtml();
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@title</title>
    <link href="~/Content/read.css" rel="stylesheet" />
</head>
<body class="wrapbig">
    <div id="readWrap" class="readWrap w640">
        <div class="bookNav">
            <a href="http://chuangshi.qq.com" target="_blank">创世中文网首页</a>&gt;
            <a href="http://chuangshi.qq.com/bk/huan/" target="_blank">玄幻小说</a>&gt;
            <a href="http://chuangshi.qq.com/bk/xh/456867.html">天域苍穹</a>
        </div><div id="chaptercontainer">
            <!-- 章节内容 --><div data-node="chapterBox" data-uuid="1703" data-volumeid="3" class="textbox">
                <div class="story_title">
                    <h1 data-node="chapterTitle">@title</h1>
                </div>
                <div class="txtwrap">
                    <div class="text">
                    <div class="bookreadercontent" style="font-size: 16px; font-family:'Microsoft YaHei';">
                        @Html.Raw(content)
                    </div>
                    </div>
                </div>

            </div>
        </div>
        <!--下一章-->
        <div id="nextPageBox" class="nextPageBox" style="">
            <a href="" id="nextChapterBtn">
                下一章<span></span>
            </a>
        </div>
    </div>
</body>
</html>

到此,网页抓取写完了,抓取规则基本跟jquery的选择器差不多

Jumony更多的使用方式请参见博客 http://www.cnblogs.com/Ivony/p/3447536.html 

未经允许不得转载:BkCoding » Jumony快速抓取网页

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址