java微博爬虫代码 爬虫爬取微博用户的所有微博

用java编写网络爬虫,用来爬网络音乐资源,再返回java页面显示该怎么实现

下面是源代码,希望可以帮到你~~

10年积累的成都网站建设、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有老边免费网站建设让你可以放心的选择与我们合作。

package com.ly.mainprocess;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

import org.apache.http.Consts;

import org.apache.http.Header;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.StatusLine;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.cookie.Cookie;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

public class Test1 {

public static void main(String[] args){

Test1 test1 = new Test1();

System.out.println(test1.process("******","******"));

}

@SuppressWarnings("deprecation")

public boolean process(String username,String password) {

boolean ret=false;

DefaultHttpClient httpclient = new DefaultHttpClient();

try {

HttpGet httpget;

HttpResponse response;

HttpEntity entity;

ListCookie cookies;

//组建登录的post包

HttpPost httppost = new HttpPost(""); // 用户登录

ListNameValuePair nvps = new ArrayListNameValuePair();

nvps.add(new BasicNameValuePair("nickname", username));

nvps.add(new BasicNameValuePair("password", password));

nvps.add(new BasicNameValuePair("origURL", ""));

nvps.add(new BasicNameValuePair("loginregFrom", "index"));

nvps.add(new BasicNameValuePair("ss", "10101"));

httppost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));

httppost.addHeader("Referer", "");

httppost.addHeader("Connection", "keep-alive");

httppost.addHeader("Content-Type", "application/x-www-form-urlencoded");

httppost.addHeader("Accept-Language", "zh-CN,zh;q=0.8");

httppost.addHeader("Origin", "");

httppost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36");

response = httpclient.execute(httppost);

entity = response.getEntity();

// System.out.println("Login form get: " + response.getStatusLine());

EntityUtils.consume(entity);

// System.out.println("Post logon cookies:");

cookies = httpclient.getCookieStore().getCookies();

if (cookies.isEmpty()) {

// System.out.println("None");

} else {

for (int i = 0; i cookies.size(); i++) {

// System.out.println("- " + cookies.get(i).toString());

}

}

//进行页面跳转

String url = ""; // 页面跳转

Header locationHeader = response.getFirstHeader("Location");

// System.out.println(locationHeader.getValue());

if (locationHeader != null) {

url = locationHeader.getValue(); // 得到跳转href

HttpGet httpget1 = new HttpGet(url);

response = httpclient.execute(httpget1);

// 登陆成功。。。hoho

}

entity = response.getEntity();

// System.out.println(response.getStatusLine());

if (entity != null) {

// System.out.println("Response content length: " + entity.getContentLength());

}

// 显示结果

BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));

String line = null;

while ((line = reader.readLine()) != null) {

// System.out.println(line);

}

//自动打卡

// 访问网站的子网页。

HttpPost httppost1 = new HttpPost(""); // 设置个人信息页面

httppost1.addHeader("Content-Type", "text/plain;charset=UTF-8");

httppost1.addHeader("Accept", "text/plain, */*");

httppost1.addHeader("X-Requested-With", "XMLHttpRequest");

httppost1.addHeader("Referer", "");

response = httpclient.execute(httppost1);

entity = response.getEntity();

// System.out.println(response.getStatusLine());

if(response.getStatusLine().toString().indexOf("HTTP/1.1 200 OK")=0){

ret = true;

}

if (entity != null) {

// System.out.println("Response content length: " + entity.getContentLength());

}

// 显示结果

reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));

line = null;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

} catch (Exception e) {

} finally {

httpclient.getConnectionManager().shutdown();

}

return ret;

}

}

java爬虫抓取指定数据

根据java网络编程相关的内容,使用jdk提供的相关类可以得到url对应网页的html页面代码。

针对得到的html代码,通过使用正则表达式即可得到我们想要的内容。

比如,我们如果想得到一个网页上所有包括“java”关键字的文本内容,就可以逐行对网页代码进行正则表达式的匹配。最后达到去除html标签和不相关的内容,只得到包括“java”这个关键字的内容的效果。

从网页上爬取图片的流程和爬取内容的流程基本相同,但是爬取图片的步骤会多一步。

需要先用img标签的正则表达式匹配获取到img标签,再用src属性的正则表达式获取这个img标签中的src属性的图片url,然后再通过缓冲输入流对象读取到这个图片url的图片信息,配合文件输出流将读到的图片信息写入到本地即可。

java如何做高级爬虫

下面说明知乎爬虫的源码和涉及主要技术点:

(1)程序package组织

(2)模拟登录(爬虫主要技术点1)

要爬去需要登录的网站数据,模拟登录是必要可少的一步,而且往往是难点。知乎爬虫的模拟登录可以做一个很好的案例。要实现一个网站的模拟登录,需要两大步骤是:(1)对登录的请求过程进行分析,找到登录的关键请求和步骤,分析工具可以有IE自带(快捷键F12)、Fiddler、HttpWatcher;(2)编写代码模拟登录的过程。

(3)网页下载(爬虫主要技术点2)

模拟登录后,便可下载目标网页html了。知乎爬虫基于HttpClient写了一个网络连接线程池,并且封装了常用的get和post两种网页下载的方法。

(4)自动获取网页编码(爬虫主要技术点3)

自动获取网页编码是确保下载网页html不出现乱码的前提。知乎爬虫中提供方法可以解决绝大部分乱码下载网页乱码问题。

(5)网页解析和提取(爬虫主要技术点4)

使用Java写爬虫,常见的网页解析和提取方法有两种:利用开源Jar包Jsoup和正则。一般来说,Jsoup就可以解决问题,极少出现Jsoup不能解析和提取的情况。Jsoup强大功能,使得解析和提取异常简单。知乎爬虫采用的就是Jsoup。 ...展开下面说明知乎爬虫的源码和涉及主要技术点:

(1)程序package组织

(2)模拟登录(爬虫主要技术点1)

要爬去需要登录的网站数据,模拟登录是必要可少的一步,而且往往是难点。知乎爬虫的模拟登录可以做一个很好的案例。要实现一个网站的模拟登录,需要两大步骤是:(1)对登录的请求过程进行分析,找到登录的关键请求和步骤,分析工具可以有IE自带(快捷键F12)、Fiddler、HttpWatcher;(2)编写代码模拟登录的过程。

(3)网页下载(爬虫主要技术点2)

模拟登录后,便可下载目标网页html了。知乎爬虫基于HttpClient写了一个网络连接线程池,并且封装了常用的get和post两种网页下载的方法。

(4)自动获取网页编码(爬虫主要技术点3)

自动获取网页编码是确保下载网页html不出现乱码的前提。知乎爬虫中提供方法可以解决绝大部分乱码下载网页乱码问题。

(5)网页解析和提取(爬虫主要技术点4)

使用Java写爬虫,常见的网页解析和提取方法有两种:利用开源Jar包Jsoup和正则。一般来说,Jsoup就可以解决问题,极少出现Jsoup不能解析和提取的情况。Jsoup强大功能,使得解析和提取异常简单。知乎爬虫采用的就是Jsoup。

(6)正则匹配与提取(爬虫主要技术点5)

虽然知乎爬虫采用Jsoup来进行网页解析,但是仍然封装了正则匹配与提取数据的方法,因为正则还可以做其他的事情,如在知乎爬虫中使用正则来进行url地址的过滤和判断。

(7)数据去重(爬虫主要技术点6)

对于爬虫,根据场景不同,可以有不同的去重方案。(1)少量数据,比如几万或者十几万条的情况,使用Map或Set便可;(2)中量数据,比如几百万或者上千万,使用BloomFilter(著名的布隆过滤器)可以解决;(3)大量数据,上亿或者几十亿,Redis可以解决。知乎爬虫给出了BloomFilter的实现,但是采用的Redis进行去重。

(8)设计模式等Java高级编程实践

除了以上爬虫主要的技术点之外,知乎爬虫的实现还涉及多种设计模式,主要有链模式、单例模式、组合模式等,同时还使用了Java反射。除了学习爬虫技术,这对学习设计模式和Java反射机制也是一个不错的案例。

4. 一些抓取结果展示收起


当前文章:java微博爬虫代码 爬虫爬取微博用户的所有微博
文章链接:http://ybzwz.com/article/dosdccp.html