当前,信息技术领域的知识在飞速的更新。作为一个程序爱好者,或者说已经超过 10年 的老码农,稍有懈怠就会被落下!跟踪当前信息技术领域的畅销书,结合自己所做的事情买来阅读,以便提升技能,就显得非常重要了。

今天我就为大家介绍如何利用 C# 语言来爬取“京东 - 计算机与互联网图书销量榜”。


我们先来看一下这个网页:

https://book.jd.com/booktop/0-0-0.html?category=3287-0-0-0-1002-1#comfort

当我们点击“第2页”时,我们发现URL变成:

https://book.jd.com/booktop/0-0-0.html?category=3287-0-0-0-1002-2#comfort

以此类推,页码的变化会导致客户端请求参数category的变化,即3287-0-0-0-1002-13287-0-0-0-1002-2……,这样我们就找到了要爬取网页的规律。

我们再来看一下,网页的源代码:

可以发现,我们所要的数据全部在li标签中的class='p-detail'中,我们只要把这个网页的HTML DOM节点得到,在用“选择器”把对应的部分提取出来就可以了。

这里推荐一个处理HTML DOM的开源工具:Jumony,可以在 Github 上下载。

下载地址为:

https://github.com/Ivony/Jumony

这里对HTML DOM开源工具不做过多介绍,要是大家感兴趣,我后面再写几篇图文来介绍这个工具。


网页分析部分介绍完了,下面我们介绍代码部分。

1. 定义存储图书的结构 Book,代码如下:

public class Book
{/// <summary>/// 获取或设置 销量排名/// </summary>public int Num { get; set; }/// <summary>/// 获取或设置 书名/// </summary>public string Title { get; set; }/// <summary>/// 获取或设置 作者/// </summary>public string Author { get; set; }/// <summary>/// 获取或设置 出版社/// </summary>public string Press { get; set; }/// <summary>/// Book实例的格式化输出/// </summary>/// <returns>Markdown格式文本</returns>public override string ToString(){string num = Num.ToString().PadLeft(2, '0');string temp = "**Top" + num + ":" + Title.Trim() + "**" + Environment.NewLine+ "- 作 者:" + Author + Environment.NewLine+ "- 出版社:"+Press;return temp;}
}

2. 获取“京东 - 计算机与互联网图书销量榜”网页的 HTML结构 的代码如下:

public static IHtmlDocument GetHtmlDocumentJd(int page)
{string url = "https://book.jd.com/booktop/0-0-0.html?"+ "category=3287-0-0-0-1002-"+ page+ "#comfort";IHtmlDocument document;try{document = new JumonyParser().LoadDocument(url);}catch{document = null;}return document;
}

3. 获取“京东 - 计算机与互联网图书销量榜”内容的代码如下:

public static List<Book> GetBooksJd(int page)
{IHtmlDocument doc = GetHtmlDocumentJd(page);if (doc == null)return null;List<Book> result = new List<Book>();List<IHtmlElement> lists = doc.Find(".p-detail").ToList();for (int i = 0; i < lists.Count; i++){Book book = new Book();book.Num = i + 1;List<IHtmlElement> s = lists[i].Find("a").ToList();//得到书的名字book.Title = s[0].InnerHtml().Trim(); List<IHtmlElement> infor = lists[i].Find("dl dd").ToList();List<IHtmlElement> authors = infor[0].Find("a").ToList();if (authors.Count > 1){string temp = infor[0].InnerHtml().Remove(0, 2).Trim();int index = temp.IndexOf("<a", StringComparison.Ordinal);string country = temp.Substring(0, index).Trim();string author1 = authors[0].InnerHtml().Trim(); // 著string author2 = authors[1].InnerHtml().Trim(); //译book.Author = country + " " + author1 + " 著 " + author2 + " 译";}else{book.Author = authors[0].InnerHtml().Trim() + " 著"; //得到作者的名字}//得到出版者的名字book.Press = infor[1].Find("a").ToList()[0].InnerHtml().Trim();result.Add(book);}return result;
}

4. 获得 Markdown 格式的字符串方法如下:

private void btnSpider_Click(object sender, EventArgs e)
{List<Book> books = BooksHtmlDocument.GetBooksJd(1);string str = "---" + Environment.NewLine + "### 京东"+Environment.NewLine;for (int i = 0; i < books.Count; i++){str += Environment.NewLine+books[i] + Environment.NewLine;}
}

5. 解析Markdown格式的文本为HTML格式文本的结果如下:


好了,到这里就基本介绍完毕了。

我在图文 计算机书籍每周销量排行榜 中的“京东”部分就是这样完成的,避免了Ctrl+CCtrl+V的尴尬,提升了工作效率。

是不是很有趣,你也来试试吧!See You!


参考图文:

  • 如何做一款「桌面版百度翻译」软件
  • 七天学会「股票数据分析软件」的开发(上)
  • 七天学会「股票数据分析软件」的开发(中)
  • 七天学会「股票数据分析软件」的开发(下)

如何利用 C# 爬取「京东 - 计算机与互联网图书销量榜」!相关推荐

  1. 如何利用 C# 爬取「当当 - 计算机与互联网图书销量榜」!

    前段时间我们介绍了如何利用 C# 语言来爬取"京东 - 计算机与互联网图书销量榜" 网页的方法,通过该方法,我们能够获得"京东"的图书销售排行榜数据. 可是,读 ...

  2. 如何利用 C# 爬取「中国图书网 - 计算机与互联网图书销量榜」!

    每周一,我们会爬取「京东」.「当当」.「互动出版网」和「中国图书网」的图书7日销量数据并做一份榜单,已经持续一段时间了,从后台阅读量的统计数据来看,对辅助大家选购计算机类书籍还是有帮助的.如果大家对这 ...

  3. 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!

    我们生活在一个快节奏的时代里,每天除了辛苦的提升自己,为生活打拼之外,偶尔的放松去看场电影也是必要的.可是能够抽出的时间有限,选择看哪部电影就是一个挠头的问题了. 幸好,有类似猫眼电影.豆瓣电影.淘票 ...

  4. 如何利用 C# 爬取「猫眼电影:最受期待榜」及对应影片信息!

    "道路千万条,安全第一条!行车不规范,亲人两行泪!" 这句在影片"流浪地球"中不断重复的话语已经被大家所熟知.为了行车的安全,我们需要遵守规范,提前规划.同样, ...

  5. 如何利用 C# 爬取「互动出版网 - 计算机图书销量榜」!

    想想自己看过的计算机方面的图书,大部分出自两个出版社,一个是 机械工业出版社,另一个是 人民邮电出版社.我们熟悉的 China-pub 即 互动出版网 收录了几乎所有机械工业出版社出版的图书. 今天我 ...

  6. 如何利用 C# 爬取「猫眼电影专业版:票房」数据!

    在现代生活中,看电影已经成为大家的一种休闲方式. 前几天,我们介绍了 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!,通过这份"热映口碑"榜单,我们可以看到大家对当前 ...

  7. 如何利用 C# 爬取「猫眼电影:国内票房榜」及对应影片信息!

    以前我写过一些爬取猫眼电影数据的图文: 如何利用 C# 爬取「猫眼电影专业版:票房」数据? 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息? 如何利用 C# 爬取「猫眼电影:最受期待榜」及 ...

  8. 技术图文:如何利用 C# 爬取 ONE 的交易数据?

    投资一个金融产品,最基本的就是拿到这个金融产品的交易数据,对这些数据进行可视化来判断趋势.去年,我在听 李笑来 讲区块链的课程上知道了 BigOne 这个由 INB 投资的交易所,而 ONE 是 Bi ...

  9. 如何利用 C# 爬取BigOne交易所的公告!

    在当今这个时代,投资可以说是每个人都应该学会的一项技能.拥有一些数字货币是程序员的信仰!交易所是进入数字货币世界最方便的一扇门,今天我就带着大家爬取 Bigone 交易所的公告数据. 首先,我们来看一 ...

最新文章

  1. 数字图像基本处理算法小结
  2. 最远的你是我最近的爱
  3. 抽象类,接口都与继承有关
  4. 【matlab-7】Matlab与线性代数(三)
  5. 语音对讲软件_三款语音转文字工具,语音输入,高效转换,准确率高
  6. jQuery基础 - 改变CSS样式
  7. python按照多个key排序
  8. Android 异步任务
  9. mysql 循环语句语法_MySQL循环语句之while循环测试
  10. mysql ocp考试准备多久_MySQL OCP考试复习系列--开篇:了解MySQL考试
  11. APP推广运营手册全集
  12. 持续化集成工具CruiseControl.NET
  13. DTcms二次开发心得
  14. 小程序学习:使用有赞UI组件
  15. python股票量化投资刑不行_【邢不行|量化小讲堂系列10-Python量化入门】量化投资中如何处理复权、除权问题...
  16. 力扣刷题 DAY_73 回溯
  17. uniapp--动态背景特效1
  18. [美术作品]小玛丽·莎托莉丝[英]弗雷德里克·莱顿作品
  19. 基于JAVA失物招领系统设计与实现 开题报告
  20. 最新仿猪八戒威客系统源码网整站源码下载

热门文章

  1. 5层模型中数据从源主机到目的主机之旅
  2. STARTUP报错:ORA-00205: error in identifying control file, check alert log for more info
  3. java培训教程:什么是匿名内部类?怎样创建匿名内部类?
  4. 数据结构(队列实现篇)
  5. python 帮助文档、自我解释
  6. zabbix 监控mysql(实例)
  7. 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门
  8. Centos7更改root密码
  9. 第一本的java 的小总结
  10. Mysql INSERT、REPLACE、UPDATE的区别