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. SharePoint2007深入浅出——使用jQuery UI

    jQuery1.6.4.js + jQuery UI 1.8.16.js 只有这个版本在IE8下的兼容性视图+Quirks(文本模式),dialog可以正常显示.

  2. iOS开发之iOS界面UI

    1.UILabel NSString *str = @"字符串大小"; UIFont *font = [UIFont fontWithName:@"Arial" ...

  3. Linux命令--网络管理

    write命令 Linux write命令用于传讯息给其他使用者. 使用权限:所有使用者. 语法 write user [ttyname] 参数说明: user : 预备传讯息的使用者帐号 ttyna ...

  4. [Assignment] C++2

    作业要求:PAT1025 翻转链表 代码在这里

  5. scala流程控制语句以及方法和函数

    1.if else表达式 scala中没有三目运算符,因为根本不需要.scala中if else表达式是有返回值的,如果if或者else返回的类型不一样,就返回Any类型(所有类型的公共超类型). 例 ...

  6. Modal实现页面跳转和控制器数据传递

    一.Model跳转的实现 1.新建工程 2.新建View控制器和导航控制器 (1)为拖控件,两个view一个navigation; 如图: (2)view的“GotoTwo”按键添加Segues到Na ...

  7. Sublime Text 3中设置不记住上次打开的文件

    转自:https://blog.csdn.net/nicholaszao/article/details/79575251 在”User/Preferences.sublime-settings”配置 ...

  8. [转载] MySQL 注入攻击与防御

    MySQL 注入攻击与防御 2017-04-21 16:19:3454921次阅读0     作者:rootclay 预估稿费:500RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页 ...

  9. HTTP 错误 401.0 - Unauthorized 的解决方案

    1.安装vs2015后,以前做的项目中Forms身份验证,竟然不能使用了 2.打开当前项目属性,将windows身份验证属性改为启用 3.vs2015生成的mvc项目中,webconfig缺失auth ...

  10. javaSE、javaEE、javaME

    javaSE.javaEE.javaME区别: Java SE 是做电脑上运行的软件. Java EE 是用来做网站的-(我们常见的JSP技术) Java ME 是做手机软件的.