学习《自己动手写网络爬虫》之记录1

本文记录了一位初学者通过书籍自学网络爬虫的过程,分享了使用开源工具HTTPClient3.1实现简单程序的经验,并解决了文件名解析和GET/POST方法应用中的问题。通过实际操作和案例分析,提供了从理论到实践的宝贵学习路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某天突发奇想,想自己写一个网络爬虫,然后上网查了前辈们的经历,发现网络爬虫好处多多,于是坚定了自己的决心。再上网一找,看到好多人推荐这本书,于是就以这本书为参考来实现自己的网络爬虫了!

首先都是照着书上的程序的运行,但毕竟这本书已经发行挺久了,于是可能会有一些误差,所以开这个博客记录一下自己的网络爬虫之路。

先说一下作者推荐的开源工具httpclient。作者用的应该是3.x,但是现在官网上已经没有这么旧的版本,而4.x与3.x的写法差距太大,对于像我这种新手来说容易晕头转向,找不到方向,后来百度到了3.1的一个版本,里面还有帮助文件下载地址:

免费的httpclient3.1.jar

然后就可以试着完成第一个简单的程序,但是这一步碰到了一些小问题:

1)关于文件名的问题,原程序是根据url获取文件名:

String filename = path.substring(path.lastIndexOf('/')+1);

这是一个截取子字符串的函数,从最后出现的"/"下一个字符到结尾,但是这样会产生一个小问题,比如说我设的path=http://www.baidu.com,这样保存的文件名就是www.baidu.com,系统会认为这是一个.com的文件,然后用记事本根本无法打开,所以我稍微改了一下:

String filename = path.substring(path.lastIndexOf('/')+1,path.lastIndexOf('.'));

这样截取的文件名就可以用记事本打开,里面的内容其实就是百度首页的源码。

2)关于post方法的调用

这里一开始弄得我很烦躁,因为需要一点网络知识,而且我钻了牛角尖了……一直在考虑源码中的两个参数是什么意思,后来因为程序编译老出错,就直接把参数注释了,结果程序也跑通了,保存的文件内容也是网页的源码(path="http://www.baidu.com"),这个时候我很迷惑,因为这样说来get和post方法根本没差!

去网上一搜,说的都是get和post的差别,主要是参数放置的差别,但是都没有解释参数有什么作用,参数的key-value值到底应该怎么设?后来想到了一个不是办法的办法,先从浏览器打开:http://www.lietu.com/search.jsp/query=flying,其实就是在猎兔网首页搜索关键字”flying“,然后我再用post方法设了一个参数:postMethod.addParameter("dw","flying");果然得到的结果和浏览器源码一致了。所以我的解释是,对于有参数的url来说两个方法差别明显,但对于主页这种没参数的来说,两个方法的结果应该是一致的!

第一个程序的总结到此为止。

《自己动手网络爬虫》 配书光盘 版权所有,侵权必究 2010年5月 _______________________________________________________________________ 一、光盘内容 本光盘是《自己动手网络爬虫》一书的配书光盘,内容包括了书中讲解的源程序。 本光盘根目录下的chap01~chap10文件夹对应于书中的章名,各章的源程序(.java文件)放在对应的文件夹中。 二、运行环境 本习题集中的程序在以下环境调试通过: (1) Windows XP/2008,SUN JDK 1.6; (2) Linux,SUN JDK 1.6; 三、注意事项 (1) 本书使用Java语言来开发网络爬虫,因此首先要准备一个Java的开发环境。 基本的Java开发环境叫做JDK(Java Develop Kit),当前可以使用JDK1.6。JDK1.6 可以从Sun公司的官方网站http://java.sun.com下载得到。使用缺省方式安装即可。 另外,使用集成开发环境Eclipse。Eclipse 可以从http://www.eclipse.org下载, 光盘中附带了eclipse软件。如果习惯用中文界面可以从 http://www.eclipse.org/babel/downloads.php下载支持中文的语言包。 (2) 在使用本光盘的程序时,请将程序拷贝到硬盘上,并去除文件的只读属性。 四、制作群 程序开发: 罗刚 王振东 五、技术支持 如果在使用此光盘中遇到什么问题,您可以通过以下方式与我们联系: 通信地址:北京盈智星科技发展有限公司 邮政编码:102208 联 系 人:罗刚 联系电话:010-81727660 电子邮件:luogang@gmail.com
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值