Linux - iconv 使用 - 处理 curl 乱码问题

时间:2021-03-22 08:39:55

1. 概述

  1. 好久没有写博客了, 最近看了些东西, 但是不知道怎么输出
  2. 简单写点东西吧

2. 场景

  1. 最近发现一个网站, 时不时会更新电子书, 书还很好
  2. 网站有一个 排行榜, 会把近期更新的电子书, 都列出来
  3. 我之前的思路, 是隔两天扫一轮
  4. 现在网站转变了思路
    1. 更新应该是每天来的
    2. 但是排行榜并不每天更新
    3. 排行榜最开始有 100 个内容, 现在只有 20 个
  5. 结果
    1. 不定期更新, 导致每次更新内容可能会很多
    2. 如果多于 20 个, 可能会导致我丢内容
  6. 我的目的
    1. 能够不漏地获取到网站更新的电子书

3. 思路

  1. 电子书的更新 url, 是有规律的, 里面的变量, 是一个 int
    1. 这个可以通过 循环 来帮助生成
  2. 因为不熟悉 爬虫, 所以只有使用 shell 来做
    1. curl 是个选择
  3. 获取的页面内容, 可以通过 grep 来过滤标题, 查看到底是什么书

4. 环境

  1. 操作系统
    1. windows 10
  2. shell
    1. git bash
  3. 建议
    1. 有条件最好用 linux

5. 问题

  1. 概述
    1. 执行中遇到了些小问题
  2. 思路
    1. 思路是先做单体, 再做循环
      1. 先使用 curl 来做
      2. 然后用 grep
      3. 最后 循环, 输出到文本文件
  3. 问题
    1. curl 乱码
      1. curl 下来的东西, 中文部分是乱码
    2. 尝试解决
      1. 调整 git bash 的编码
        1. 想法
          1. 可能是 curl 的结果, 和 git bash 的编码不一致
          2. 尝试调整成 gb2312 看看
        2. 结果
          1. curl 的东西可以看了
          2. 但是 文件系统 里, 之前正常显示的内容乱码了
        3. 结论
          1. curl 内容是 gb2312 的编码
          2. 本地文件系统, 是 utf8 的编码
          3. 两种编码不一致, 所以乱码了
          4. 这种调整 gitbash charset 的思路, 不可用
      2. 改变 curl 内容的编码
        1. 想法
          1. 不是 git bash 乱码
          2. 是 curl 内容乱码
          3. 如何改变 curl 结果的编码
        2. 确认编码
          1. 思路
            1. 是的, 之前的编码是猜的
            2. 但是, 编码是可以确认的
            3. 正确的思路, 是应该先确认
            4. shell 代码
              > curl <url> | grep -E 'charset' <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        3. 转换
          1. 使用 iconv 工具
            1. 概述
              1. 一个转码的工具
              2. 简单使用, 不做详细介绍了
            2. 使用
              1. 命令

                # 1. 查看支持字符集
                > iconv -l
                # 2. 转换字符集
                ## 1. 默认输出到屏幕
                ## 2. -t 默认好像是 utf8
                > iconv -f <fromEncode> -t <toEncode> <file>
                # 3. 支持管道
                > curl <url> | iconv -f gb2312 

5. 后续

  1. 后续就是过滤内容, 生成列表
    1. 这块也不难, 我就不讲了

6. 问题

  1. 思路的本质
    1. 感觉本质上, 这是个爬虫
    2. 如果会 爬虫, 工作会不会轻松很多
  2. 安全机制
    1. 我如果每天扫那个网站, 会不会触发安全机制
  3. curl 和 grep
    1. 好久不用, 感觉有点生疏
  4. 我过滤的内容, 最后都是带 html 标签的
    1. 据说这些工具, 可以去掉标签
      1. grep
      2. sed
      3. 只有下来研究了

7. ref

  1. https://blog.csdn.net/wangjun5159/article/details/79289044