第一节课课程内容
(1)多线程的java爬虫程序;
(2)需要抓取新浪微博、微信的发言、评论(调用他们所提供的API接口);
(3)LDA
设计一个小软件用来获取主流媒体(微博、微信)中你需要的信息,
你可以填入“需要主题”“目标媒体”“时间段”,填完后启动程序,将搜索到的相关信息保存为txt或者插入数据库中
关于大数据的一些关键词:
云计算、hadoop、storm、Spark、Scala
前期目标
1.快速熟悉java语言
2.对爬虫有简单的理解
3.看懂网上的java爬虫代码,使之能运行并能做简单修改
具体内容
1.网络爬虫的概念与原理
网络爬虫基本原理(二)
2.利用java与httpcomponents-client-4.4进行简单的网页代码的抓取
HttpComponents也就是以前的httpclient项目,是Java的HTTP协议库,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协议最新的版本和建议。它可以通过url模拟Http的请求,获得服务端的响应,并可以将响应的内容打印出来。
以下是对于baidu.com的网页简单抓取
package java_crawler;
//java的IO流,与输出输入有关,比如抓到网页源代码后存入txt就需要用到
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//httpcomponents-client-4.4的jar包导入
import org.apache.http.HttpHost;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class getpagehtml{
public static void main(String[] args) throws ClientProtocolException, IOException
{
//创建HttpClientBuilder,类似与打开浏览器
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
HttpGet httpGet = new HttpGet("http://www.baidu.com");
//打印GET请求
System.out.println(httpGet.getRequestLine());
try {
//执行get请求
HttpResponse httpResponse = closeableHttpClient.execute(httpGet);
//获取响应消息实体
HttpEntity entity = httpResponse.getEntity();
//响应状态
System.out.println("status:" + httpResponse.getStatusLine());
//判断响应实体是否为空
if (entity != null) {
//获取响应体的类型
System.out.println("getContentType:" + entity.getContentType());
//打印网页内容
System.out.println("response content:" + EntityUtils.toString(entity));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流并释放资源
closeableHttpClient.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
网上对于java爬虫的代码很多,由于用到的HttpClient组件的版本不同,在一些类和方法的使用上出现了较大的差异,光创建一个HttpClient的实例化就出现了3种不同的方法~~:
HttpClient httpClient = new HttpClient(); (HttpClient3.x)
HttpClient httpClient = new DefaultHttpClient(); (HttpClient4)
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); (HttpClient4.4)
感觉本周的难点并不在于java的编程方面,因为没有学习过计算机网络,对于网络的基本知识是缺乏的,HTTP协议(报文、首部、状态码),GET与POST方法。。。。。