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

  2. 一个问题

    1. 问题: 在 git for windows 下, 使用 java 会有奇怪的问题

      1. 环境

        1. windows
        2. java
          1. 输出编码是 gbk
        3. git for windows
          1. 输出编码是 utf-8
      2. 操作

        1. 输入命令 java -h 有 乱码
        2. 将 git 的编码调整为 gbk, 输出 命令输出 没有乱码
        3. 将 git 的编码调整为 utf-8, 使用 java -h|iconv -f gbk 依然乱码
      3. 疑问

        1. 为什么 iconv 可以处理 curl 传来的信息, 却处理不了 java 的
        2. 是因为两者 输出的结果, 本身就不是同一类东西吗
        3. 知道的高手走过路过, 麻烦留个言

Linux - iconv 使用 - 处理 curl 乱码问题的更多相关文章

  1. linux下打开txt显示乱码的解决方法

    Linux打开txt文件乱码的解决方法   Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb1 ...

  2. 解决Linux文档显示中文乱码问题以及编码转换

    解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...

  3. linux终端 字符界面 显示乱码

    方法一:配置SSH工具 SecureCRT中文版配置 [全局选项]→[默认会话]→[编辑默认设置]→[终端]→[外观]→[字体]→[新宋体 10pt CHINESE_GB2312]→[字符编码 UTF ...

  4. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  5. Linux与Windows 解压乱码 UTF8BOM读取问题

    Linux 与 Windows 文件乱码问题 这几天需要在linux下用CNN跑数据,但是把数据和数据列表list上传到linux下时却出现了不少乱码的问题.将这两天碰到的编码问题简单的总结一下. 1 ...

  6. XShell连接 Linux系统,显示中文乱码

    摘要: Linux系统,中文显示乱码 XShell是一个强大的安全终端模拟软件,它支持SSH1, SSH2及 Microsoft Windows平台的Telnet NetSarang Xshell 4 ...

  7. SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题

    一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...

  8. Linux 解决Linux下火狐浏览器中文乱码成方块显示问题

    解决Linux下火狐浏览器中文乱码成方块显示问题 by:授客 QQ:1033553122   测试环境: CentOS-6.0-x86_64 问题描述: 浏览器页面显示如下   解决方法: 安装中文支 ...

  9. Linux下命令行cURL的10种常见用法示例

    curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,下面这篇文章主要给大家分享了在Linux中命令行cURL的10种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...

随机推荐

  1. cetnos7下openresty使用luarocks 进行lua的包管理

    先安装一下包管理工具 yum install luarocks lua-devel -y luarocks install lpack ln -s /usr/lib64/lua /usr/local/ ...

  2. TCP/IP 协议图--网络层中的 IP 协议

    IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层——网络层.网络层的主要作用是“实现终端节点之间的通信”.这种终端节点之间的通信也叫“点对点通信”. 网络的下一层——数据链路层的主要作用是 ...

  3. 016.2 String

    内容:String方法+练习 #######################################比较方法:equals()字符串长度:int length()字符的位置:int index ...

  4. 解决Could not commit JPA transaction RollbackException: Transaction marked as rollbackOnly

    项目测试发生问题,方法正常结束,但是报了 Could not commit JPA transaction; nested exception is javax.persistence.Rollbac ...

  5. Dockerfile.md

    Docker 使用 前提条件 Docker目前只能在64位CPU架构的计算机上运行(目前只能是x86_64 .amd64). Linux 3.8 或 更高版本的内核.3.8之前的版本也能运行,但效果不 ...

  6. 【[SDOI2015]约数个数和】

    慢慢化柿子吧 要求的是这个 \[\sum_{i=1}^N\sum_{j=1}^Md(ij)\] 神奇的约数个数函数有一个这样的性质 \[d(ij)=\sum_{x|i}\sum_{y|j}[(x,y) ...

  7. Hadoop学习之路(二十六)MapReduce的API使用(三)

    影评案例 数据及需求 数据格式 movies.dat 3884条数据 1::Toy Story (1995)::Animation|Children's|Comedy 2::Jumanji (1995 ...

  8. (转)ci

    1  从代码管理器签出源文件 2  修改代码 3  编译代码 4  遇到错误,转到2继续修改直到达到预期 5  运行单元测试,期望所有的测试绿色(通过) 6  单元测试出错,转入2 7  重构代码,按 ...

  9. sdn测量综述

    一 文章名称:A Survey on Security-Aware Measurement in SDN 发表时间:2018 来源:<Security & Communication N ...

  10. Reading HPSRouter A High Performance Software Router

    ICACT 2018 Background High speed traffic SDN NFV Hardware Advantages High performace Disadvantages C ...