Java-HttpURLConnection爬虫程序-0913

更新时间:2024-03-17 23:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Android总结 孙沛林

Java-HttpURLConnection抓取网络数据(2016-9-13)

项目:JavaSpiderDemo 环境:MyEclipse8.5

导包

第 1 页

Android总结 孙沛林

源码

Java

MyConn.java

import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.*;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;

第 2 页

Android总结 孙沛林

/**

* 独立的解析一篇CSDN博客 * 提取出:标题,分类,内容 * @author 孙沛林 * */

public class MyConn extends Thread {

public MyConn(){}

public MyConn(String surl){this.surl=surl;}

private String surl;// 文章的网址

@Override

public void run() { }

// 客户端的浏览器类型

public static String[] UserAgent = {

\,// PC端的浏览器 // 以下都是手机端的浏览器 getHTML();

\(Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, \(iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like \

(SymbianOS/9.4;

Series60/5.0

NokiaN97-1/20.0.019;

Profile/MIDP-2.1

like Gecko) Version/4.0 Mobile Safari/533.2\,

Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.11\,

Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18121\,

//http://blog.csdn.net/yjflinchong

\, \,

\, \,

\ }; /**

* 根据一个网址,获取该页面的HTML源码 * @param surl */

public void getHTML(){

try {

// 1. 创建URL对象

第 3 页

Android总结 孙沛林

URL url = new URL(surl); // 2. 获取HttpUrlConnection对象

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 2.5 伪装成浏览器

conn.setRequestProperty(

\, // 浏览器的类型 UserAgent[1]); }

}

// 3. 获取服务器的响应码

int responseCode = conn.getResponseCode();

System.out.println(\+responseCode); // 4. 判断响应码是否正常,HttpURLConnection.HTTP_OK=200 if (responseCode == HttpURLConnection.HTTP_OK) { }

// TODO Auto-generated catch block e.printStackTrace();

StringBuffer sb = new StringBuffer();// HTML的容器 String readLine;// 每一行的临时存放

//5. 处理响应流,必须与服务器响应流输出的编码一致\ BufferedReader responseReader = new BufferedReader(

new InputStreamReader(

conn.getInputStream(), \));

// 6. 循环读取流中的行

while ((readLine = responseReader.readLine()) != null) {

sb.append(readLine).append(\); }// while // 7. 关闭流

responseReader.close();

//System.out.println(\输入HTML parseHTML(sb.toString());

} catch (Exception e) {

// 解析文章详细页面

private void parseHTML(String html) {

// 1文章 title

String atitle = doc.getElementsByClass(\).first().text(); text.append(\文章 title-------\\n\); text.append(atitle);

// 2文章 分类

Elements cats = doc.getElementsByClass(\);

第 4 页

StringBuffer text = new StringBuffer();// HTML的容器

Document doc = Jsoup.parse(html);

Android总结 孙沛林

// 循环遍历

text.append(\文章 分类-------\\n\); for(Element cat : cats){ text.append(cat.text()); }

// 3文章 content

String acontent = doc.getElementsByClass(\).first().text(); //text.append(acontent);

text.append(\文章 content==============================\\n\); text.append(acontent);

// 数据的插入

//insert(atitle,cats.text(),acontent);

System.out.println(\解析的结果====================\\n\ } }

+text.toString());

ListPage.java

import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.*;

第 5 页

Android总结 孙沛林

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /**

* 解析CSDN博客专栏(包含很多文章列表) * 提取出:文章标题和链接 * @author 孙沛林 * */

public class ListPage extends Thread {

public ListPage(){}

public ListPage(String surl){this.surl=surl;}

private String surl;// 文章的网址

@Override

public void run() { }

// 客户端的浏览器类型

public static String[] UserAgent = {

\,// PC端的浏览器 // 以下都是手机端的浏览器 getHTML();

\(Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, \(iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like \

(SymbianOS/9.4;

Series60/5.0

NokiaN97-1/20.0.019;

Profile/MIDP-2.1

like Gecko) Version/4.0 Mobile Safari/533.2\,

Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.11\,

Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18121\,

//http://blog.csdn.net/yjflinchong

\, \,

\, \,

\ }; /**

* 根据一个网址,获取该页面的HTML源码 * @param surl

第 6 页

Android总结 孙沛林

*/

public void getHTML(){

try {

// 1. 创建URL对象

URL url = new URL(surl); // 2. 获取HttpUrlConnection对象

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 2.5 伪装成浏览器

conn.setRequestProperty(

\, // 浏览器的类型 UserAgent[1]); }

}

// 3. 获取服务器的响应码

int responseCode = conn.getResponseCode();

System.out.println(\+responseCode); // 4. 判断响应码是否正常,HttpURLConnection.HTTP_OK=200 if (responseCode == HttpURLConnection.HTTP_OK) { }

// TODO Auto-generated catch block e.printStackTrace();

StringBuffer sb = new StringBuffer();// HTML的容器 String readLine;// 每一行的临时存放

//5. 处理响应流,必须与服务器响应流输出的编码一致\ BufferedReader responseReader = new BufferedReader(

new InputStreamReader(

conn.getInputStream(), \));

// 6. 循环读取流中的行

while ((readLine = responseReader.readLine()) != null) {

sb.append(readLine).append(\); }// while // 7. 关闭流

responseReader.close();

//System.out.println(\输入HTML parseHTML(sb.toString());

} catch (Exception e) {

// 解析文章详细页面

private void parseHTML(String html) {

StringBuffer text = new StringBuffer();// HTML的容器 Document doc = Jsoup.parse(html);

Elements items = doc.getElementsByTag(\); for (Element item : items) { // 找到链接

Element link = item.getElementsByTag(\).first();

第 7 页

Android总结 孙沛林

if(link!=null){

String href = link.attr(\); String title = link.text(); text.append(href); text.append(title);

text.append(\); //getHTML(href);

new MyConn(href).start();// 启动线程--> 解析一篇文章 }

} } }

Main.java

import java.util.*; /**

* java爬虫程序 * @author 钧 * */

public class Main {

/**

* @param args */

public static void main(String[] args) {

// 循环解析多个URL

List list = new ArrayList();

list.add(\ list.add(\ list.add(\ for (String url : list) { }

//System.out.println(\你传了:\

String url = \; new ListPage(url).start();// 解析列表

new MyConn(url).start();// 启动线程

// // // // // // //

第 8 页

Android总结 孙沛林

}

}

第 9 页

本文来源:https://www.bwwdw.com/article/1cf8.html

Top