前言

  前几天写了个爬虫,然后认识到了自己的不足。 烽火情怀推荐了Jumony.Core,通过倚天照海- -推荐的文章,也发现了Jumony.Core。

  研究了2天,我发现这个东西简单粗暴,非常好用,因为语法比较像jQuery。上手快,也很好理解。

添加DLL

  IDE是Visual Studio 2013,我是在NugGet中搜索,并添加到项目中。

  

Jumony的用法

1、从网站获取html代码,将html字符串分析为标准的文档对象模型(DOM)。

IHtmlDocument source = new JumonyParser().LoadDocument("http://www.23us.so/files/article/html/13/13655/index.html", System.Text.Encoding.GetEncoding("utf-8"));

Jumony的API可以从互联网上直接抓取文档分析,并根据HTTP头自动识别编码,但是上面的网站怎么也无法获取到html,其他网站就没问题(例如博客园、起点),后来我把源码下载下来,一步步测试,发现html是获取到的,但是乱码,导致了Jumony类库分析html文本的时候,分析的不正确。解决办法就是设置utf-8。

2、获取所有的meta标签

var aLinks = source.Find("meta");//获取所有的meta标签
foreach (var aLink in aLinks)
{
if (aLink.Attribute("name").Value() == "keywords")
{
name = aLink.Attribute("content").Value();//无疆,无疆最新章节,无疆全文阅读
}
}

3、获取 name=keywords 的meta标签,并得到content属性里的值

string name = source.Find("meta[name=keywords]").FirstOrDefault().Attribute("content").Value();

4、获取所有Class=L

var lLinks = source.Find(".L");//获取所有class=L的td标签
foreach (var lLink in lLinks)//循环class=L的td
{
  //lLink值 例如:<td class="L"><a href="http://www.23us.so/files/article/html/13/13655/5638724.html">楔子</a></td>
} var aLinks = source.Find(".L a");//获取所有class=L下的a标签
foreach (var aLink in aLinks)
{   
  //aLink值 <a href="http://www.23us.so/files/article/html/13/13655/5638724.html">楔子</a>
  string title = aLink.InnerText()//楔子
  string url = aLink.Attribute("href").Value();//http://www.23us.so/files/article/html/13/13655/5638724.html
}

5、根据ID获取

var chapterLink = source.Find("#at a");//查找id=at下的所有a标签
foreach (var i in chapterLink)//这里循环的就是a标签
{
  //aLink值 例如:<a href="http://www.23us.so/files/article/html/13/13655/5638724.html">楔子</a>
  string title = i.InnerText();//楔子
  string url = i.Attribute("href").Value();//http://www.23us.so/files/article/html/13/13655/5638724.html
}

C#完整代码

using Ivony.Html;
using Ivony.Html.Parser;using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc; namespace Test.Controllers
{
public class CrawlerController : BaseController
{
// GET: Crawler
public void Index()
{
//需要给utf-8的编码,否则html是乱码。
IHtmlDocument source = new JumonyParser().LoadDocument("http://www.23us.so/files/article/html/13/13655/index.html", System.Text.Encoding.GetEncoding("utf-8")); //<meta name="keywords" content="无疆,无疆最新章节,无疆全文阅读"/>
string name = source.Find("meta[name=keywords]").FirstOrDefault().Attribute("content").Value().Split(',')[];//获取小说名字
var chapterLink = source.Find("#at a");//查找id=at下的所有a标签
foreach (var i in chapterLink)//这里循环的就是a标签
{
//章节标题
string title = i.InnerText(); //章节url
string url = i.Attribute("href").Value(); //根据章节的url,获取章节页面的html
IHtmlDocument sourceChild = new JumonyParser().LoadDocument(url, System.Text.Encoding.GetEncoding("utf-8")); //查找id=contents下的小说正文内容
string content = sourceChild.Find("#contents").FirstOrDefault().InnerHtml().Replace("&nbsp;", "").Replace("<br />", "\r\n"); //txt文本输出
string path = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/") + "Txt/";
Novel(title + "\r\n" + content, name, path);
}
}
}
}

相关文章:C# 爬虫 抓取小说

Jumony源代码地址:https://github.com/Ivony/Jumony

C# 爬虫 Jumony html解析的更多相关文章

  1. 笔记-爬虫-js代码解析

    笔记-爬虫-js代码解析 1.      js代码解析 1.1.    前言 在爬取网站时经常会有js生成关键信息,而且js代码是混淆过的. 以瓜子二手车为例,直接请求https://www.guaz ...

  2. python爬虫---爬虫的数据解析的流程和解析数据的几种方式

    python爬虫---爬虫的数据解析的流程和解析数据的几种方式 一丶爬虫数据解析 概念:将一整张页面中的局部数据进行提取/解析 作用:用来实现聚焦爬虫的吧 实现方式: 正则 (针对字符串) bs4 x ...

  3. 开源磁力搜索爬虫dhtspider原理解析

    开源地址:https://github.com/callmelanmao/dhtspider. 开源的dht爬虫已经有很多了,有php版本的,python版本的和nodejs版本.经过一些测试,发现还 ...

  4. JAVA网络爬虫WebCollector深度解析——爬虫内核

    WebCollector爬虫官网:https://github.com/CrawlScript/WebCollector 技术讨论群:250108697 怎样将爬虫内核导入自己的项目? 1.进入爬虫官 ...

  5. Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据

    目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...

  6. 爬虫_拉勾网(解析ajax)

    拉勾网反爬虫做的比较严,请求头多添加几个参数才能不被网站识别 找到真正的请求网址,返回的是一个json串,解析这个json串即可,而且注意是post传值 通过改变data中pn的值来控制翻页 job_ ...

  7. Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息

    本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...

  8. python爬虫之html解析Beautifulsoup和Xpath

    Beautiifulsoup Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据.BeautifulSoup 用来解析 HTML 比较简 ...

  9. Java爬虫利器HTML解析工具-Jsoup

    Jsoup简介 Java爬虫解析HTML文档的工具有:htmlparser, Jsoup.本文将会详细介绍Jsoup的使用方法,10分钟搞定Java爬虫HTML解析. Jsoup可以直接解析某个URL ...

随机推荐

  1. aspcms多图调用以及错误提示:3704

    1.“为师资介绍”(相册列表)建立了内容页(相册内容页), 需要对模板页面改造,在相册详细页调用多图,之前没有试过,这次利用: 实现多图调用,注意不能使用contentid=[content:id]  ...

  2. Android百度地图开发-第一篇:申请、搭建百度地图

    一.前言 这是第一篇关于Android使用百度地图的学习记录,主要记录: 1.在百度地图开发者平台上申请API Key. 2.在自己的应用中加入百度地图的Android版SDK. 3.在自己的应用中显 ...

  3. 再起航,我的学习笔记之JavaScript设计模式03

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 上一 ...

  4. 解决删除元素动画的bug

    效果说明 首先说明一下我需要做到的效果 其实很简单---点击删除按钮的时候,加入删除动画 删除动画是这样的,高度和宽度都会均匀的变小,内部的元素需要被隐藏(因为会有文字挤在一起):直到变为0结束,时长 ...

  5. iOS源码博文集锦2

    iOS精选源码 快速集成观看直播和开播   一款类携程商旅的城市选择界面   一个类似于QQ电话的动画效果   高德地图定位,导航,轨迹,GPS纠偏   真实逻辑滚动数字DPScrollNumberL ...

  6. ubuntu下安装opencv库+Python2.7环境安装及开发摄像头拍照应用

    好久没有更新了,今天更一篇最近遇到的问题,及解决办法,后面博客得继续写起来 安装 #使用Python下的lib库直接进行安装 apt-get install python-opencv 测试 #使用如 ...

  7. Python应用场景

    Web应用开发 Python经常被用于Web开发.比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序.Python定义了WSGI标准应用接口来协调Http服务器与基于P ...

  8. 【机器学习PAI实践一】搭建心脏病预测案例

    一.背景 心脏病是人类健康的头号杀手.全世界1/3的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病. 所以,如果可以通过提取人体相关的体侧指标,通过数据挖掘的方式来分析不同特征对于心脏病的 ...

  9. 在Entity Framework 中用 Code First 创建新的数据库

    在Entity Framework 中用 Code First 创建新的数据库 (原文链接) 本文将逐步介绍怎样用Code First 创建新数据库,使用在代码中定义类和API中提供的特性(Attri ...

  10. Python正则匹配

    使用Re模块 首先生成一个匹配模式pattern,如pattern='.test' 然后使用re.match(pattern,str)或者search()匹配调用 match跟search的区别: m ...