在使用.NET下的NCrawler爬取网页信息时,如果网页以GBK或GB2312进行编码,则下载的内容会出现乱码。

查找原因,发现在NCrawler.HtmlProcessor项目下HtmlDocumentProcessor.cs中的Process()方法使用htmlDoc.DetectEncoding(reader)进行页面编码检测,出现中文乱码情况。

改用HttpWebResponse中返回的CharacterSet进行编码判断,发现部分网页的Header中未定义CharacterSet,会出现乱码。调试发现这类网页的HttpWebResponse中返回的CharacterSet被统一设置为ISO-8859-1。查阅MSDN发现CharacterSet的缺省设置为ISO-8859-1。

修改Process(),使用以下方法可以有效解决乱码问题:

Encoding documentEncoding = Encoding.GetEncoding(propertyBag.CharacterSet);
if (propertyBag.CharacterSet == "ISO-8859-1")
{
  documentEncoding = htmlDoc.DetectEncoding(reader);
}

转载于:https://www.cnblogs.com/leoyoungblog/p/5075847.html

NCrawler爬取中文网页时乱码问题的解决方法相关推荐

  1. requests爬取中文网页时中文字符变英文的解决方法

    在使用python requests库爬取网页时,源代码中的中文字符在爬取下来后变成了英文字符 例如: import requests r = requests.get('http://apps.we ...

  2. 关于Centos中在线解压文件名中有中文字符出现乱码的终极解决方法 unar 我的压缩文件.zip

    本帖最后由 hsxnet 于 2018-2-4 16:14 编辑 关于Centos中在线解压文件名中有中文字符出现乱码的终极解决方法(亲测总结): 记录一下我测试的笨办法,以备自己日后查询: 一.从C ...

  3. Python:爬取数据出现response.status_code为403解决方法

    目录 前言 1. 原理 2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问.服务器接收到这个信息,理应返回了这个403的信息 在前一块的代 ...

  4. scrapy 爬取https网页时出现ssl错误

    还有好多错误代码没有保存下来,错误发生在Openssl/SSL.py中: AttributeError:'NoneType'object has no attribute '_app_data' 1 ...

  5. 【爬虫】Selenium爬取动态网页的base64图片

    文章简介 Selenium爬取动态网页的base64图片,并解决页面完整加载缓慢,base64字符串的获取和格式转码,一些页面不存在,部分照片无法加载等问题.后附源码. 目录 1,需求 2,环境和使用 ...

  6. requests.get()爬去中文网页乱码解决方法

    requests.get()爬去中文网页乱码解决方法 当我们使用requests.get()爬取百度首页时会发现,返回的html代码中的中文发生乱码. import requestsheaders = ...

  7. 解决Scrapy抓取中文网页保存为json文件时中文不显示而是显示unicode的问题

    注意:此方法跟之前保存成json文件的写法有少许不同之处,注意区分 情境再现: 使用scrapy抓取中文网页,得到的数据类型是unicode,在控制台输出的话也是显示unicode,如下所示 {'au ...

  8. 利用img请求一个html页面,爬虫学习笔记——爬取单个网页里的所有图片(入门)...

    最近闲着,想学一下爬虫 (^-^)V --[手动比耶]先从简单的练习开始吧~ 爬取单个网页里的所有图片,这个没有什么难点,因为不需要翻页哈哈哈哈. 我很喜欢一些文章中的配图,比如这篇,里面就会有很多电 ...

  9. Python爬虫练习笔记——爬取单个网页里的所有图片(入门)

    最近闲着,想学一下爬虫 (^-^)V --[手动比耶] 先从简单的练习开始吧~ 爬取单个网页里的所有图片,这个没有什么难点,因为不需要翻页哈哈哈哈. 我很喜欢一些文章中的配图,比如这篇,里面就会有很多 ...

最新文章

  1. ElasticSearch 2 (1) - Getting Start
  2. How can ifm help the SME WELL?
  3. 重磅 | 20+技术大咖齐聚 阿里云数据库创新上云峰会进入一周倒计时
  4. 【caffe-Windows】微软官方caffe之 matlab接口配置
  5. 闭包应用之延迟函数setTimeout
  6. 【Python爬虫学习笔记12】Ajax数据爬取简介
  7. 循环数组最大字段和(51Nod-1050)
  8. 大数据之-Hadoop3.x_MapReduce_序列化案例FlowReducer---大数据之hadoop3.x工作笔记0099
  9. 怎么样eclipse发达国家多重聚合关系maven项目和使用git管理
  10. matlab中S函数的概念及使用
  11. 莱布尼茨公式C语言编程,高等数学——手撕牛顿莱布尼茨公式
  12. 内网端口映射工具之80端口映射和全端口映射及辅助发布网站应用
  13. java openoffic linux_CentOS 下安装 OpenOffice4.0
  14. 逆水寒 各个服务器位置,2019年3月28日首个“超级大服”服务器合并命名结果公告...
  15. 2019第三届“数维杯”大学生数学建模夏令营
  16. win7通过win10的ISO镜像免费升级正版win10(组图)
  17. python红楼梦人物统计_Python分析红楼梦,宝玉和十二钗的人物关系
  18. 怎么用python启动谷歌浏览器_Selenium 基于python 安装以及配置谷歌浏览器启动
  19. 《Microduino实战》——3.5 I/O操作——现学现用
  20. 传统人工智能中的三大问题

热门文章

  1. 权限管理(1):简介
  2. 内存管理tcmalloc
  3. ASP.Net新手项目经验谈
  4. 打印杨辉三角(数组练习)
  5. SuperMap_iClient3D_10.2.1_for_WebGL下载
  6. Eclipse之Project facet Java version 1.8 is not supported.
  7. 30个Linux安装案例,Make和Makefile说明,Linux工具,容器安全性,DevOps技巧等
  8. libreoffice使用_使用LibreOffice Calc管理您的财务
  9. 免费开源低代码拖拽开发_资料来源:面向开源开发人员的免费代码搜索工具
  10. 第八章 丹药吃坏人了