一、 网络爬虫是做什么的? 他的主要工作就是 跟据指定的url地址 去发送请求,获得响应, 然后解析响应 , 一方面从响应中查找出想要查找的数据,另一方面从响应中解析出新的URL路径,然后继续访问,继续解析;继续查找需要的数据和继续解析出新的URL路径 .
一个简单的爬虫 必需的功能:
1: 发送请求和获取响应的功能 ;
2: 解析响应的功能 ;
3: 对 过滤出的数据 进行存储 的功能 ;
4: 对解析出来的URL路径 处理的功能 ;
二、爬取对象分类
静态网页:可以通过URLConnection获取页面的全部数据,这个做法就比较简单了,只需要构建一个URLConnection请求获取页面数据,然后通过正则表达式获取相关的数据即可
动态网页:网页的部分或全部数据是通过js的方式动态展现的,不能通过URLConnection直接获取,此时就需要借助HtmlUnit工具,此工具是一个无界面的浏览器,可以模拟浏览器的操作,通过这个工具,加载完网页之后,再获取页面数据进行解析,即可爬取到数据
三,本文内容
import java.io.*;
import java.net.*;
public class URLDemo {
public static void main(String args[]){
String strurl="http://search.dangdang.com/?key=%BB%FA%D0%B5%B1%ED&act=input";
//建立url爬取核心对象
try {
URL url=new URL(strurl);
//通过url建立与网页的连接
URLConnection conn=url.openConnection();
//设置Cookie
conn.setRequestProperty("Cookie", "CCSHOW=0000; UM_distinctid=16851a6d99c465-06e87115fc0059-5d1f3b1c-1fa400-16851a6d99d4e; Hm_lvt_a508812e5f39db30c00a9baf08b5552c=1547558116; qqmail_alias=caill@primeton.com; biz_referrer=mail.primeton.com; qm_authimgs_id=0; qm_verifyimagesession=h01bbe41167310e7c54373a6f9faf39f21af4455d38cabe79a7574cd4e4389431f727dfd70f106d2bfc; tinfo=1551787690.0000*; qm_flag=0; qqmail_alias=caill@primeton.com; sid=687662877&1630ba2744be71610e2f2c8f59e0f0db,c_jLNc2jTdbU.; qm_sid=1630ba2744be71610e2f2c8f59e0f0db,c_jLNc2jTdbU.; qm_username=687662877; biz_username=687662877; ssl_edition=sail.qq.com; username=687662877&687662877; qylevel=3; qm_sk=687662877&nf7TF-OB; new_mail_num=687662877&150; qm_ssum=687662877&2c729250e04be3a80760a9cc62a41cd8");
//通过链接取得网页返回的数据
InputStream is=conn.getInputStream();
System.out.println(conn.getContentEncoding());
//一般按行读取网页数据,并进行内容分析
//因此用BufferedReader和InputStreamReader把字节流转化为字符流的缓冲流
//进行转换时,需要处理编码格式问题
BufferedReader br=new BufferedReader(new InputStreamReader(is,"GB2312"));
//按行读取并打印
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
四、总结:
通过以上代码就能获取静态的网页数据了,后面只需要通过正则表达式截取有用信息即可,此文不再赘述。
网友评论