创新实践(1)--爬虫的简单理解与java页面的简单抓取

本课程将从Java爬虫程序开始,介绍如何利用Java与httpcomponents-client-4.4进行网页抓取,实现从主流媒体(微博、微信)获取特定信息的功能,涉及大数据关键词如云计算、hadoop、storm、Spark、Scala。主要内容包括网络爬虫概念、基本原理及实践应用,通过实例演示如何使用Java编程实现网页代码抓取。

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

第一节课课程内容

(1)多线程的java爬虫程序;
(2)需要抓取新浪微博、微信的发言、评论(调用他们所提供的API接口);
(3)LDA

设计一个小软件用来获取主流媒体(微博、微信)中你需要的信息,
你可以填入“需要主题”“目标媒体”“时间段”,填完后启动程序,将搜索到的相关信息保存为txt或者插入数据库中

关于大数据的一些关键词:
云计算、hadoop、storm、Spark、Scala


前期目标

1.快速熟悉java语言
2.对爬虫有简单的理解
3.看懂网上的java爬虫代码,使之能运行并能做简单修改


具体内容

1.网络爬虫的概念与原理

百度百科-网络爬虫

网络爬虫基本原理(一)

网络爬虫基本原理(二)


2.利用java与httpcomponents-client-4.4进行简单的网页代码的抓取

httpcomponents-client-4.4下载地址

Apache HttpClient 4.4 API

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方法。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值