CsQuery中文编码乱码问题

一、问题描述

InnerHTML 中文显示为Модель

1. 引言

相比于Java而言,基于C#的开源爬虫就少了很多。入行这么多年也从未接触过爬虫。出于兴趣今天给大家介绍一个C# 的爬虫工具Abot. 需要使用可以通过Nuget获取。Abot本身就支持多线程的爬取,

内部使用CsQuery来解析爬取到的Html文档。熟悉jQuery的同学肯定能快速上手CsQuery, 它就是一个C#版本的jQuery。

这里以爬取博客园当天的新闻数据为例,看看如何使用Abot。

 

二、解决方法

在初始化CQ对象前,先设置执行以下语句:

CsQuery.Config.HtmlEncoder = CsQuery.HtmlEncoders.None;

2. 博客园新闻页面

http://news.cnblogs.com/ 这是博客园的新闻首页。可以看到典型的分页显示。比如 http://news.cnblogs.com/n/page/2/ 这是新闻的第二页。

真正的新闻详细页面 比如:http://news.cnblogs.com/n/544956/, 通过正则表达式可以很轻松的匹配这两种Url 类型。

当然我们可以通过一个 for 循环分别爬取各个page的新闻数据。然后解析出发表于今天的新闻。但是我希望只以http://news.cnblogs.com/ 为种子页面,爬取今天的新闻。

由于博客园新闻分页并不是采用Ajax,对于爬虫而言这非常友好

图片 1

因此我们定义

图片 2

        /// <summary>
        /// 种子Url
        /// </summary>
        public static readonly Uri FeedUrl = new Uri(@"http://news.cnblogs.com/");

        /// <summary>
        ///匹配新闻详细页面的正则
         /// </summary>
        public static Regex NewsUrlRegex = new Regex("^http://news.cnblogs.com/n/\d+/$", RegexOptions.Compiled);

        /// <summary>
        /// 匹配分页正则
         /// </summary>
        public static Regex NewsPageRegex = new Regex("^http://news.cnblogs.com/n/page/\d+/$", RegexOptions.Compiled);

图片 3

 

本文由金沙官网线上发布于编程,转载请注明出处:CsQuery中文编码乱码问题

您可能还会对下面的文章感兴趣: