前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何判断页面编码

如何判断页面编码

作者头像
李振
发布2021-11-26 15:07:43
1.1K0
发布2021-11-26 15:07:43
举报
文章被收录于专栏:乱码李乱码李

W3C

在编写微博爬虫的时候,稍微学习了一下网页编码的知识,主要来自于 W3C 官方文档的 5.2.2 小节。

To sum up, conforming user agents must observe the following priorities when determining a document’s character encoding (from highest priority to lowest):

  1. An HTTP “charset” parameter in a “Content-Type” field.
  2. A META declaration with “http-equiv” set to “Content-Type” and a value set for “charset”.
  3. The charset attribute set on an element that designates an external resource.

首先看 http 头信息中的 Content-Type 字段,如果没有的话,会查看 Meta 信息,如果还没有的话,会查看一些外部资源的信息,比如css或者JavaScript的charset字段。 如果以上信息依然不能确定编码的话,就采用默认的 ISO-8859-1 字符集去解析网页。

gb2312 页面解析

在爬取 “珠海市人力资源和社会保障局” 的网站的时候,遇到中文编码 gb2312,使用 iconv-lite 对其进行处理,代码如下:

代码语言:javascript
复制
"use strict";
const request = require('request');
const cheerio = require('cheerio');
const iconv = require('iconv-lite');

let req = request('http://www.zhrsj.gov.cn/xinxi/gzzk/');
req.on('error', (err)=> {
    console.log('error', err);
});
let chunks = [];
req.on('data', (res)=> {
    chunks.push(res);
});
req.on('end', ()=> {
    let decodedBody = iconv.decode(Buffer.concat(chunks), 'gb2312');
    let $ = cheerio.load(decodedBody);
    $("table[width='96%']").find('tr').each((index, e)=> {
        let a = $(e).children();
        console.log(a.eq(1).text());
    });
});
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • W3C
  • gb2312 页面解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档