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

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

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

先说一下作者推荐的开源工具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来说两个方法差别明显,但对于主页这种没参数的来说,两个方法的结果应该是一致的!

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值