① 如何使用java寫一個輕量的爬取動態內容 的爬蟲
最近剛好在學這個,對於一些第三方工具類或者庫,一定要看官方tutorial埃 學會用chrome network 分析請求,或者fiddler抓包分析。 普通的網頁直接用httpclient封裝的API就可以獲取網頁HTML了,然後 JSoup、正則 提取內容。
② 能用java寫出一個爬取音頻和視頻的爬蟲嗎
這個肯定是可以的,不過我只做過爬取文本和圖片的。沒做過爬視頻和音頻的,不過就我所知是可以的
③ java網路爬蟲爬取web視頻資源,並下載怎麼做
/*這是個下載圖片的爬蟲,給你參考一下*/
import java.io.File;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Scanner;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DownMM {
public static void main(String[] args) throws Exception {
//out為輸出的路徑,注意要以\\結尾
String out = "D:\\JSP\\pic\\java\\";
try{
File f = new File(out);
if(! f.exists()) {
f.mkdirs();
}
}catch(Exception e){
System.out.println("no");
}
String url = "http://www.mzitu.com/share/comment-page-";
Pattern reg = Pattern.compile("<img src=\"(.*?)\"");
for(int j=0, i=1; i<=10; i++){
URL uu = new URL(url+i);
URLConnection conn = uu.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko");
Scanner sc = new Scanner(conn.getInputStream());
Matcher m = reg.matcher(sc.useDelimiter("\\A").next());
while(m.find()){
Files.(new URL(m.group(1)).openStream(), Paths.get(out + UUID.randomUUID() + ".jpg"));
System.out.println("已下載:"+j++);
}
}
}
}
④ 用java編寫網路爬蟲,用來爬網路音樂資源,再返回java頁面顯示該怎麼實現
下面是源代碼,希望可以幫到你~~
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;
List<Cookie> cookies;
//組建登錄的post包
HttpPost httppost = new HttpPost("http://login.hi.mop.com/Login.do"); // 用戶登錄
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("nickname", username));
nvps.add(new BasicNameValuePair("password", password));
nvps.add(new BasicNameValuePair("origURL", "http://hi.mop.com/SysHome.do"));
nvps.add(new BasicNameValuePair("loginregFrom", "index"));
nvps.add(new BasicNameValuePair("ss", "10101"));
httppost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
httppost.addHeader("Referer", "http://hi.mop.com/SysHome.do");
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", "http://hi.mop.com");
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("http://home.hi.mop.com/ajaxGetContinusLoginAward.do"); // 設置個人信息頁面
httppost1.addHeader("Content-Type", "text/plain;charset=UTF-8");
httppost1.addHeader("Accept", "text/plain, */*");
httppost1.addHeader("X-Requested-With", "XMLHttpRequest");
httppost1.addHeader("Referer", "http://home.hi.mop.com/Home.do");
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 電影類
根據需要些就是了
public class Movie{
private String name;
private String director;
Sprivate String tarring;
Moive(String name,String director,String tarring)
{
this.name=name;
this.director =director;
this.tarring =tarring;
}
static public void main(Stirng[] str){
Moive m=new Moive("三國演義","張紀中","唐國強");
}
}
⑥ Java源碼 實現網路爬蟲
//Java爬蟲demo
importjava.io.File;
importjava.net.URL;
importjava.net.URLConnection;
importjava.nio.file.Files;
importjava.nio.file.Paths;
importjava.util.Scanner;
importjava.util.UUID;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassDownMM{
publicstaticvoidmain(String[]args)throwsException{
//out為輸出的路徑,注意要以\結尾
Stringout="D:\JSP\pic\java\";
try{
Filef=newFile(out);
if(!f.exists()){
f.mkdirs();
}
}catch(Exceptione){
System.out.println("no");
}
Stringurl="http://www.mzitu.com/share/comment-page-";
Patternreg=Pattern.compile("<imgsrc="(.*?)"");
for(intj=0,i=1;i<=10;i++){
URLuu=newURL(url+i);
URLConnectionconn=uu.openConnection();
conn.setRequestProperty("User-Agent","Mozilla/5.0(WindowsNT6.3;WOW64;Trident/7.0;rv:11.0)likeGecko");
Scannersc=newScanner(conn.getInputStream());
Matcherm=reg.matcher(sc.useDelimiter("\A").next());
while(m.find()){
Files.(newURL(m.group(1)).openStream(),Paths.get(out+UUID.randomUUID()+".jpg"));
System.out.println("已下載:"+j++);
}
}
}
}
⑦ 怎樣用java代碼編寫網路小程序,下載某網站的電影
首先搞清楚那個網站的流媒體協議是什麼,然後google或是這種協議的傳送編碼規范,之後就是用socket向伺服器發送符合編碼規范的握手信息,建立起連接就ok了,就看著電影一點點地down下來吧
⑧ JAVa電影指南,分別為,1查看電影2添加電影3管理電影4電影人氣求代碼編寫
樓主你這要求不夠明確不好寫啊
我這一看還以為是AV電影指南呢
⑨ 北大青鳥分享Java多線程爬蟲實現
一、需求
1.定時抓取固定網站新聞標題、內容、發表時間和來源。
2.程序需要支持分布式、多線程
二、設計
1.網站是固定,但是未來也可能添加新的網站去抓取,每個網站內容節點設計都不一樣,這樣就需要支持動態可配置來新增網站以方便未來的擴展,這樣就需要每次都需要開發介入。
2.網站html節點的結構可能發生變化,所以也要支持提取節點可配置。
3.怎樣支持分布式?暫時最簡單的想法就是:多機器部署程序,還有新搞一台或者部署程序其中一台製作一個定時任務,定時開啟每台機器應該抓取哪個網站,暫時不能支持同一個網站同時可以支持被多台機器同時抓取,這樣會比較麻煩,要用到分布式隊列。所以暫時一個網站同時只會被單台機器抓取。
4.多線程,怎樣多線程?多線程抓取我這邊有兩個實現:
(1)一個線程抓取一個網站,維護一個自己的url隊列做廣度抓取,同時抓取多個網站。如圖:
(2)多個線程同時抓取不同的網站。如圖:
以上兩張辦法其實各有優點,也給有缺點,看我們怎麼取捨了。
方法1:每個線程創建一個自己的隊列,圖中的queue可以不用concurrentQueue,優點:不涉及到控制並發,每個網站一個線程抓取一個網站,抓取完畢即自動回收銷毀線程。控制方便。缺點:線程數不可以擴展,例如當只有3個網站,你最多隻能開3個線程來抓取,不能開更多,有一定的局限性。
方法2:N個線程同時抓取N個網站,線程數和網站數目不掛鉤,優點:線程數可以調整並且和和抓取網站數量無關。3個網站我們可以開4個5個或者10個這個可以根據您的硬體資源進行調整。缺點:需要控制並發,並且要控制什麼時候銷毀線程(thread1空閑,並且queue為空不代表任務可以結束,可能thread2結果還沒返回),當被抓取的網站響應較慢時,會拖慢整個爬蟲進度。
三、實現
抓取方式最終還是選擇了方法二,因為線程數可配置!
使用技術:
jfinal 用了之後才發現這東西不適合,但是由於項目進度問題,還是使用了。
maven項目管理
jetty server
mysql
eclipse 開發
項目需要重點攻破的難點:
(1)合理的控制N個線程正常的抓取網站,並且當所有線程工作都完成了並且需要抓取的隊列為空時,N個線程同時退出銷毀。
(2)不同網站設計節點不一樣,需要通過配置解決各個網站需要抓取的URL和抓取節點內容在html節點的位置。
(3)個性化內容處理,由於html結構設計問題,北大青鳥http://www.kmbdqn.com/認為抓取的內容可能有些多餘的html標簽,或者多餘的內容該怎麼處理。
⑩ 怎麼用java代碼爬取網頁中視頻的源地址,不
第一種方式:1、用HttpClient模擬請求html 獲取html源碼;2、用jsoup方法抓取解析網頁數據
第二種方式:1、用HttpClient模擬請求html 獲取html源碼;2、用正則抓取解析網頁數據
有很多種方式能夠獲取html源碼,源碼獲取到了數據解析就很容易了。你可以網路一下有很多