自己动手写网络爬虫学习笔记

刚开始学《自己动手写网络爬虫》,只实现了第一部分的内容。现在做一个总结。
这本书中主要用到了HttpClient和HtmlParser这两个开源的jar包。同时,还要依赖codec.这个开源包。
HttpClient用的是3.x版本的。HtmlParser用的是1.4版本的。
两个版本的可以在官网上下载。也可以在我的百度网盘上下载。
链接为:http://pan.baidu.com/s/1jHBeA82
提取码为:uo3u
在运行的过程中,会出现两个问题。
第一个:
org.htmlparser.util.EncodingChangeException: character mismatch (new: 进 != old: è) for encoding change from ISO-8859-1 to UTF-8 at character offset 5159
通过查阅网络和看代码,发现是类Page中SetEncoding方法中一下代码的问题:

  for (int i = 0; i < offset; i++)
                        if (new_chars[i] != buffer[i])
                            throw new EncodingChangeException ("character mismatch (new: "
                            + new_chars[i]
                            + " != old: "
                            + buffer[i]
                            + ") for encoding change from "
                            + encoding
                            + " to "
                            + character_set
                            + " at character offset "
                            + offset);
                }

注释掉这部分代码即可。 修改之后的HtmlParser命名为HtmlParser1.4Revision, 在上述百度云盘中可以下载。

第二个问题:
Exception in thread “main” java.lang.IllegalArgumentException: Invalid uri http://image.baidu.com/search/index?ct=201326592&cl=2&st=-1&lm=-1&nc=1&ie=utf-8&tn=baiduimage&ipn=r&rps=1&pv=&fm=rs1&word=%E9%9D%92%E5%B1%B1%E7%BB%BF%E6%B0%B4%E5%A4%A7%E8%87%AA%E7%84%B6%E9%A3%8E%E6%99%AF&hs=0%A1%C5iquery%3D%25E9%25A3%258E%25E6%2599%25AF%25E5%25A4%25A7%25E5%259B%25BE%25E7%2589%2587∨iquery=%25E7%25BE%258E%25E5%25BE%2597%25E8%25AE%25A9%25E4%25BA%25BA%25E7%25AA%2592%25E6%2581%25AF%25E7%259A%2584%25E9%25A3%258E%25E6%2599%25AF&ofr=%25E7%25BE%258E%25E5%25BE%2597%25E8%25AE%25A9%25E4%25BA%25BA%25E7%25AA%2592%25E6%2581%25AF%25E7%259A%2584%25E9%25A3%258E%25E6%2599%25AF&sensitive=0’: Invalid query
主要问题在于URI这个类。在java中也有这个类。通过对比发现,httpclient中的URI只能接受ASCII码的uri。如果uri中出现可见的非ASCII字符,则会报出上面的错误。
修改之后,修改后的命名为HttpClient3.1Revision。在上述百度网盘中可以下载。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengjihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值