该项目是之前用于分析 「动漫花园」 网站,现在分享给大家。
Nuget: https://www.nuget.org/packages/WuMortal.Dmhy
安装:Install-Package WuMortal.Dmhy
项目使用 HtmlAgilityPack
解析「动漫花园」所爬取到的网页数据。
「动漫花园」数据分析:进入查看
「动漫花园」WebAPI:DotNet Core 开发,进入查看 待整理中。
「动漫花园」WebApp:Angular 6 开发, 进入查看 待整理中。
Dmhy-Mobile:.NET + Angular.js 开发,进入查看 。
ps:数据获取过程可能需要梯子,所有方法都是异步的
核心类:
类 | 方法签名 | 说明 |
---|---|---|
DmhyInfo | 获取「动漫花园」一些信息 | |
Task<DDramaIndex[]> GetDramaIndexDataAsync(); | 获取番剧索引数据 | |
Task<DCategory[]> GetDramaCategoryAsync(); | 获取番剧类别信息 | |
Task<DTeam[]> GetTeamAsync(); | 获取字幕组信息 | |
Task<DHotPost[]> GetHotPostAsync(); | 热门资源 | |
DmhyPost | 该类负责不同参数获取帖子 | |
Task<DPost[]> GetTopsDataByCategoryIdAsync(long categoryId, long pageIndex); | 根据分类Id获取帖子 | |
Task<DPost[]> GetTopsDataByKeyWordAsync(string keyWord, long pageIndex); | 根据关键词获取帖子 | |
Task<DPost[]> GetTopsDataByPageIndexAsync(long pageIndex); | 获取最新帖子 | |
Task<DPost[]> GetTopsDataByTeamIdAsync(long userId, long pageIndex); | 获取字幕组的帖子 | |
Task<DPost[]> GetTopsDataByUserIdAsync(long userId, long pageIndex); | 获取帖 | |
DmhyPostDetailed | 获取帖子详情和评论 | |
Task GetPostDetailedAsync(string id); | 获取帖子详细内容 | |
Task<DComment[]> GetCommentsAsync(string postId); | 获取帖子的评论信息 |
DmhyFactory:在不使用依赖注入的情况下需要使用该类生成所需要的核心类 ,包含:DmhyInfo、DmhyPost、DmhyPostDetailed
DmhyExtensions:对 ASP.NET Core 支持,依赖注入。
- 调整项目结构,增加了单元测试、ASP.NET Core 测试项目。
- 增加对 ASP.NET Core 支持, 增加依赖注入,同时保留非依赖注入的方式使用。
首先安装 Nuget 包:Install-Package WuMortal.Dmhy
using (HttpClient client = new HttpClient())
{
DmhyFactory dmhyFactory = new DmhyFactory(client);
//生成 dmhyInfo 类
var _dmhyInfo = dmhyFactory.BuilderDmhyInfo();
//生成 dmhyPost 类
var _dmhyPost = dmhyFactory.BuilderDmhyPost();
//调用该类获取热门帖子的方法
var hotPost =await _dmhyInfo.GetHotPostAsync();
//获取最新帖子的方法
var newPost=await _dmhyPost.GetTopsDataByPageIndexAsync(1);
}
v2.0 主要是提供了对 ASP.NET Core 的支持,所以在 ASP.NET Core 中使用是非常简单的。
在 Startup.cs
类的 ConfigureServices()
方法中添加如下代码:
services.AddDmhyAnalysis();
之后在需要使用的地方直接注入即可,此处是获取热门帖子的案例:
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
readonly IDmhyInfo _dmhyInfo;
public ValuesController(IDmhyInfo dmhyInfo)
{
_dmhyInfo = dmhyInfo;
}
[HttpGet]
public async Task<DHotPost[]> Get()
{
return await _dmhyInfo.GetHotPostAsync();
}
}
推荐使用 v2.0
Install-Package WuMortal.Dmhy -Version 0.1.3
v1.0 项目地址:https://github.com/WuMortal/Dmhy-DataAnalysis/tree/v1.0