照着书上把代码写完之后运行MyCrawler主程序,发现在存储的路径下面只有一个网页内容,就说明爬虫只爬取了一个网页,仔细检查了书上的代码,发现并没有错误,后来查了API之后才发现,在Parser的构造函数里有一个是可以带参数的,我就说嘛,没有传入URL的参数,它怎么知道解析哪个嘛。

![parser带参数截图]

带了参数之后,但发现还是只有一个网页,我就知道肯定是过滤器出问题了,于是把过滤器改了,不管怎么样都解析,就是把不符合过滤条件的else部分也返回true,这样果然是没问题了,可以爬取很多网页了。初级的爬虫就这样完成了。 后来我发现运行时,控制台总是提示警告,大概意思是说无法预料到获取的网页实际大小是多少,不好给出缓存空间,建议使用流式读取内容。。。。

我参照httpClient的APi使用GetResponseBodyAsStream代替了之前的GetResponseBody,可是又出问题了,写入内容时乱码了。 网上查了之后找到了问题所在,也找到了解决办法,原因在于用BufferedReader缓存输入流里面的数据时,InputStreamReader读取流的时候使用的是默认的字符集:

InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。

InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。

InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader。

InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。

因为不知道到底要用什么字符集来读取,只有先用ISO-9958-1来读取,然后用readline函数来转换成字符串,之后再用String的getByte(charset)来转换成字节序列,最后直接把这个写入到本地文件就可以了。![截图]

自己动手写网络爬虫-----(1)相关推荐

  1. 记录《自己动手写网络爬虫 》书中涉及的内容学习一些算法

    第1篇  自己动手抓取数据 第1章  全面剖析网络爬虫 3 1.1  抓取网页 4 1.1.1  深入理解URL 4 1.1.2  通过指定的URL抓取 网页内容 6 1.1.3  Java网页抓取示 ...

  2. 《用Python写网络爬虫第2版》PDF中英文+代码分析

    互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问.但是,这些数据难以复用.它们被嵌入在网站的结构和样式当中,需要抽取出来才能使用.从网页中抽取数据的过程又称为网络爬虫,随着越来越多的信息 ...

  3. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  4. 《用Python写网络爬虫》——1.5 本章小结

    本节书摘来自异步社区<用Python写网络爬虫>一书中的第1章,第1.5节,作者 [澳]Richard Lawson(理查德 劳森),李斌 译,更多章节内容可以访问云栖社区"异步 ...

  5. 用Python写网络爬虫pdf

    下载地址:网盘下载 作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你可以使用少量编程技能就可以爬取复杂的网站. <用Pyt ...

  6. 用python写网络爬虫 第2版 pd_用Python写网络爬虫(第2版)

    用Python写网络爬虫(第2版)电子书 畅销的Python网络爬虫发实战图书全新升级版,上一版年销量近40000册. 针对Python 3.6版本编写. 提供示例完整源码和实例网站搭建源码,确保用户 ...

  7. 网络爬虫python的特点有哪些_为什么写网络爬虫天然就是择Python而用

    关于这个问题,老猿就先从自己的经历讲起吧.很多年前,大约11年前,老猿我接手了一个搜索引擎的网络爬虫,那是一个用C++写的通用搜索引擎的爬虫.C++的语言,多线程的实现,爬虫的运行效率非常高.但是,找 ...

  8. python爬取微博恶评_详解用python写网络爬虫-爬取新浪微博评论

    新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id. 分析新浪微博的评论获取方式得知,其采用动态加载.所以使用json模块解析jso ...

  9. 用Python写网络爬虫:推荐这本书看看。

    <用Python写网络爬虫>讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中抓取数据的三种方法,提取缓存中的数据,使用多个线程和进程来进行并发抓取,如何抓取动态 ...

  10. python网络爬虫网易云音乐_手把手教你写网络爬虫(1):网易云音乐歌单

    大家好,<手把手教你写网络爬虫>连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意.本文由浅入深的把爬虫技术和盘托出,为初学者提供一种轻 ...

最新文章

  1. 检查Java中的字符串是空还是空[重复]
  2. 如何判断序列是不是堆_备胎是什么意思?如何判断自己是不是感情中的备胎?...
  3. 35、Power Query-分组中国式排名
  4. 主线程如何等待多线程完成 返回数据_多线程基础体系知识清单
  5. 用户密码登录改造实现
  6. IBM DB2 Intelligent for Data/Text Version 6
  7. oracle having(),Oracle HAVING子句
  8. $con=mysql_connect_php连接mysql mysql_connect()与mysqli_connect()的盲点
  9. python实现蒙特卡洛算法_用Python实现基于蒙特卡洛算法小实验
  10. RN TouchableOpacity点击事件不响应原因详解
  11. idea 2017 常用图标
  12. 矩阵的求逆:inv( )
  13. 人员考勤,MySQL数据库一个表自动生成3表筛选人员迟到早退缺勤
  14. 〖Python网络爬虫实战③〗- 爬虫的基本原理
  15. Shader学习之Cg语言三(Cg表达式与控制语句)
  16. Packet Tracer 5.0 汉化包
  17. 买笔记本电脑的13个重要的验机步骤
  18. APK文件完全破解(源码可见)
  19. USACO 1.3.1 挤牛奶
  20. MM 委外加工(Subconctracting)流程

热门文章

  1. Matlab 三角函数输入
  2. 2022-2028全球与中国智能家居安防系统市场现状及未来发展趋势
  3. Java applet 类
  4. ISO14000环境管理体系认证
  5. [转载]马士兵Java视频教程 —— 学习顺序
  6. 摘录自《蔡康永的说话之道》-笔记
  7. 简单理解以太网和令牌环网【区别】
  8. Windows Server AppFabric简介
  9. 后门及持久化访问1----辅助功能镜像劫持
  10. SAP中物料质检视图中检验设置和QM采购的应用区别