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. 对于over-posting的防御

    over-posting简单的说就是指用户通过猜测等手段得知了后端数据Model的属性名称,在数据更新或添加的时候提交了本不应该允许用户更改的数据库字段,并且在服务器端因为没有进行防御而将恶意提交的数 ...

  2. 乘风破浪:LeetCode真题_015_3Sum

    乘风破浪:LeetCode真题_015_3Sum 一.前言 关于集合的操作,也是编程最容易考试的问题,比如求集和中的3个元素使得它们的和为0,并且要求不重复出现,这样的问题该怎么样解决呢? 二.3Su ...

  3. 沉淀,再出发:python中的pandas包

    沉淀,再出发:python中的pandas包 一.前言 python中有很多的包,正是因为这些包工具才使得python能够如此强大,无论是在数据处理还是在web开发,python都发挥着重要的作用,下 ...

  4. 使用事务和SqlBulkCopy批量插入数据

    SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能 ...

  5. .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法

    在使用.Net 官方 Url重定向组件时,发现若原地址包含中文,如:http://localhost/首页.html 重定向为:http://localhost/index.aspx?id=首页  时 ...

  6. 【[SHOI2007]善意的投票】

    直接是最小割啊 设最终还和\(S\)相连表示睡觉,和\(T\)相连表示不睡觉 如果这个人想睡觉,那么就从源点向它连\(1\)的边,表示割掉这条边选择不睡觉的代价为1 如果这个人不想睡觉的话,就向汇点连 ...

  7. 32位 的变量 用于表示 ms ,可以表示多少天那?

    1.在  TI  的 BLE 协议栈 中,即 OSAL 中 获取当前 系统 tick 的方法如下 /* * Read the system clock - returns milliseconds * ...

  8. HTML5手机端拍照上传

    1.accept="image/*" capture="camera" 自动调用手机端拍照功能 accept="image/*" captu ...

  9. Linux文本处理

    作为一名 Linux 研发人员,几乎每天都要面对文本处理场景. 因此 掌握文本处理套路 并 熟练运用文本处理命令 ,对于 提升工作效率 意义重大. 本文以一个实战例子抛砖引玉,介绍如何运用 grep ...

  10. 批量kill杀死某些会话session的PL/SQL

    原文:http://blog.itpub.net/9240380/viewspace-666622/ SQL> declare 2 v_sid v$session.sid%type; --定义如 ...