自己动手写网络爬虫(第一天)

博主在2015年决定从零开始学习网络爬虫,介绍了URL的基本构成,并使用Java和HttpClient实现了简单的网页抓取。

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

现在是2015年12月10日晚上21:56,我坐在自己的电脑面前发呆,忽然想起自己的笔记本里还雪藏着好东西,哈哈哈,赶紧在臃肿的电脑磁盘里找啊找啊,
这里写图片描述
哎呦喂,我擦,到底有啥东西,(搜刮过程自行脑补) 然后找到了以前收藏的一本书《自己动手写网络爬虫》,╮(╯▽╰)╭反正每天晚上都很无聊,所以准备从今晚开始学这本书吧。
这里写图片描述
这里写图片描述
在粗略的看了一下这本书后,火速前往百度下载干活的工具

1.eclipse4.3(kelper)中文版
2.配套书籍源代码

然后泡上一杯咖啡,打开了尘封已久的….咳咳PDF书籍,so 现在我就要开始学习了(废话真多)

第一天

╮(╯▽╰)╭ 一大堆蚊子,看得我头都晕了,只看记得一句话:网络爬虫的基本操作是抓取网页。又介绍了一下URL的组成部分。
URL通常由三部分组成:
1.访问资源的命名机制;
2.存放资源的主机
3.资源自身的名称,由路径表示
http开头的是 HTTP协议的URL,比如:http://www.wolfmark.org/
file开头的是文件的URL,比如 file://ftp.wolfmark.org/

好了,热身完了,现在开始吹牛了。
这里写图片描述
哎呀,要写代码了,想想还真是小激动啊,咱也是写爬虫的人了,虽然我不知道爬虫到底有多牛X….算了,反正是学习了。打开万能的eclipse,
这里写图片描述
他喵了个咪,哎,我那蹩脚的英文啊….叫啥名字呢,.嗯 就叫WebSpider吧
这里写图片描述
这里写图片描述
然后再新建一个类
这里写图片描述
这里写图片描述
然后开始动手了,根据葵花宝典的指示,我们先要构造URL对象

URL pageURL=new URL(path);

然后发现,他喵的居然错了,有红线!!!这让没有JAVA开发经验的人情何以堪???
这里写图片描述
在思考了30秒后,想起了JAVA要导入包,java.net.URL
嗯,没错了。

eclipse 默认快捷键 Ctrl+Shift+o 会自动添加缺省的包,前提是你要把光标放在有红线的代码上

可以通过获得的URL对象来取得网络流,进而想操作本地文件一样来操作网络资源:

InputStream stream=pageURL.openStream();

总结一下,因为只用java.net包中的api来模拟IE客户端工作,代码量非常大,所以在实际开发中常常使用Apache的HTTp客户端开源项目——HttpClient。它完全能够处理HTTP连接中的各种问题,使用起来非常方便。只需要在项目中引入HttpClient.jar包。好吧,我又去百度搜刮HttpClient.jar包了,顺带还找到了一个貌似是官方PDF,留着有时间用.英盲的我科普一下,tutorial是说明书的意思。

HttpClient.jar包
HttpClient官方教程

然后我们就向工程里添加需要的包,先建立一个文件夹lib文件夹,然后把三个文件全部拖进去,然后点确定就可以
这里写图片描述
然后再项目上点击右键
【重构路径】->【配置重构路径】
这里写图片描述
然后导入我们刚刚的三个包
这里写图片描述

具体操作还是看百度经验把,我实在太懒了可能说的不是很详细。
http://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html

然后,写出了我们的第一个程序

package com;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;

public class Spider {

    public static void main(String[] args) throws HttpException, IOException {
        //创建一个客户端,类似于打开一个浏览器
        HttpClient httpClient=new HttpClient();
        //创建一个get方法,类似于在浏览器地址栏中输入一个地址
        GetMethod getMethod=new GetMethod("http://www.wolfmark.org");
        //回车,获得响应状态码
        int statusCode=httpClient.executeMethod(getMethod);
        //查看命中情况,可以获得的东西更多,比如head,cookies等
        System.out.println("response="+getMethod.getResponseBodyAsString());

    }

}

END:现在时间是2015年12月11日 0:19 该休息了(虽然没有学多少),可能程序员熬夜是常有的事,但是养好身体才是关键,世界晚安!

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值