原理即是保存cookie數據復保存登陸後的制cookie.以後每次抓取頁面把cookie在頭部信息裡面發送過去。系統是根據cookie來判斷用戶的。有了cookie就有了登錄狀態,以後的訪問都是基於這個cookie對應的用戶的。補充:Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言。Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
㈡ 如何爬取別人網站的視頻資源放到自己的網站
通過視頻的URL,使用KeepVid能從YouTube獲取到視頻文件,而且提供多種格式的視頻文件形式下載。
目前支持的視頻網站有(其中就有我朝的tudou):
youtube.com(youtu.be)
megavideo.com
dailymotion.com
twitvid.com
tudou.com
videoweed.es
stagevu.com
vbox7.com
zshare.net
v.9you.com
altervideo.net
clip.vn
divxstage.eu
Java applet做的,研究研究對你應該有幫助。
KeepVidDownloader.java
㈢ java 網路爬蟲怎麼實現
1、在打開的ie瀏覽器窗口右上方點擊齒輪圖標,選擇「Internet選項」,如下圖所內示:
㈣ java語言採集一個頁面的視頻的播放地址(隨便哪個網站都行)
你的意思是要抄播放地址,襲而不是視頻文件?
如果只是地址,建議使用httpclient的功能,直接獲取html文檔,根據該網站的規則,正則匹配地址。。
如果是視頻文件,那麼我只下載過圖片,用的是java.net.URL這個包里有個URL的類,下載用的是BufferedInputStream,有個構造函數,可以直接通過網路獲得流。。
㈤ 我現在想通過java編寫的網路爬蟲抓取,新浪新聞網頁上的評論請問您現在解決了嗎
對一種指定的頁面,還不算太難的。 HttpURLConnection 基本可以。
㈥ java 網路爬蟲怎麼實現
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。
傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。對於垂直搜索來說,聚焦爬蟲,即有針對性地爬取特定主題網頁的爬蟲,更為適合。
以下是一個使用java實現的簡單爬蟲核心代碼:
public void crawl() throws Throwable {
while (continueCrawling()) {
CrawlerUrl url = getNextUrl(); //獲取待爬取隊列中的下一個URL
if (url != null) {
printCrawlInfo();
String content = getContent(url); //獲取URL的文本信息
//聚焦爬蟲只爬取與主題內容相關的網頁,這里採用正則匹配簡單處理
if (isContentRelevant(content, this.regexpSearchPattern)) {
saveContent(url, content); //保存網頁至本地
//獲取網頁內容中的鏈接,並放入待爬取隊列中
Collection urlStrings = extractUrls(content, url);
addUrlsToUrlQueue(url, urlStrings);
} else {
System.out.println(url + " is not relevant ignoring ...");
}
//延時防止被對方屏蔽
Thread.sleep(this.delayBetweenUrls);
}
}
closeOutputStream();
}
private CrawlerUrl getNextUrl() throws Throwable {
CrawlerUrl nextUrl = null;
while ((nextUrl == null) && (!urlQueue.isEmpty())) {
CrawlerUrl crawlerUrl = this.urlQueue.remove();
//doWeHavePermissionToVisit:是否有許可權訪問該URL,友好的爬蟲會根據網站提供的"Robot.txt"中配置的規則進行爬取
//isUrlAlreadyVisited:URL是否訪問過,大型的搜索引擎往往採用BloomFilter進行排重,這里簡單使用HashMap
//isDepthAcceptable:是否達到指定的深度上限。爬蟲一般採取廣度優先的方式。一些網站會構建爬蟲陷阱(自動生成一些無效鏈接使爬蟲陷入死循環),採用深度限制加以避免
if (doWeHavePermissionToVisit(crawlerUrl)
&& (!isUrlAlreadyVisited(crawlerUrl))
&& isDepthAcceptable(crawlerUrl)) {
nextUrl = crawlerUrl;
// System.out.println("Next url to be visited is " + nextUrl);
}
}
return nextUrl;
}
private String getContent(CrawlerUrl url) throws Throwable {
//HttpClient4.1的調用與之前的方式不同
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url.getUrlString());
StringBuffer strBuf = new StringBuffer();
HttpResponse response = client.execute(httpGet);
if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
HttpEntity entity = response.getEntity();
if (entity != null) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(entity.getContent(), "UTF-8"));
String line = null;
if (entity.getContentLength() > 0) {
strBuf = new StringBuffer((int) entity.getContentLength());
while ((line = reader.readLine()) != null) {
strBuf.append(line);
}
}
}
if (entity != null) {
nsumeContent();
}
}
//將url標記為已訪問
markUrlAsVisited(url);
return strBuf.toString();
}
public static boolean isContentRelevant(String content,
Pattern regexpPattern) {
boolean retValue = false;
if (content != null) {
//是否符合正則表達式的條件
Matcher m = regexpPattern.matcher(content.toLowerCase());
retValue = m.find();
}
return retValue;
}
public List extractUrls(String text, CrawlerUrl crawlerUrl) {
Map urlMap = new HashMap();
extractHttpUrls(urlMap, text);
extractRelativeUrls(urlMap, text, crawlerUrl);
return new ArrayList(urlMap.keySet());
}
private void extractHttpUrls(Map urlMap, String text) {
Matcher m = (text);
while (m.find()) {
String url = m.group();
String[] terms = url.split("a href=\"");
for (String term : terms) {
// System.out.println("Term = " + term);
if (term.startsWith("http")) {
int index = term.indexOf("\"");
if (index > 0) {
term = term.substring(0, index);
}
urlMap.put(term, term);
System.out.println("Hyperlink: " + term);
}
}
}
}
private void extractRelativeUrls(Map urlMap, String text,
CrawlerUrl crawlerUrl) {
Matcher m = relativeRegexp.matcher(text);
URL textURL = crawlerUrl.getURL();
String host = textURL.getHost();
while (m.find()) {
String url = m.group();
String[] terms = url.split("a href=\"");
for (String term : terms) {
if (term.startsWith("/")) {
int index = term.indexOf("\"");
if (index > 0) {
term = term.substring(0, index);
}
String s = //" + host + term;
urlMap.put(s, s);
System.out.println("Relative url: " + s);
}
}
}
}
public static void main(String[] args) {
try {
String url = "";
Queue urlQueue = new LinkedList();
String regexp = "java";
urlQueue.add(new CrawlerUrl(url, 0));
NaiveCrawler crawler = new NaiveCrawler(urlQueue, 100, 5, 1000L,
regexp);
// boolean allowCrawl = crawler.areWeAllowedToVisit(url);
// System.out.println("Allowed to crawl: " + url + " " +
// allowCrawl);
crawler.crawl();
} catch (Throwable t) {
System.out.println(t.toString());
t.printStackTrace();
}
}
㈦ 爬蟲怎麼用
網路爬蟲軟體怎麼使用 5分
搜索引擎使用網路爬蟲尋找網路內容,網路上的HTML文檔使用超鏈接連接了起來,就像功成了一張網,網路爬蟲也叫網路蜘蛛,順著這張網爬行,每到一個網頁就用抓取程序將這個網頁純塌抓下來,將內容抽取出來,同時抽取超鏈接,作為進一步爬行的線索。網路爬蟲總是要從某個起點開始爬,這個起點叫做種子,你可以告訴它,也可以到一些網址列表網站上獲取
網頁抓取/數據抽取/信息提取軟體工具包MetaSeeker是一套完整的解決方案,裡面有定題網路爬蟲,也叫聚焦網路爬蟲,這種爬蟲抓取下來一個頁面後並不抽取所有的超鏈接,而是只找主題相關的鏈接,籠統的說就是爬行的范圍是受控的。網路爬蟲實現代碼主要集中在MetaSeeker工具包中的DataScraper工具。可以從 gooseeker網站下載下來看
請詳細解釋什麼事網路爬蟲,有什麼作用
說通俗一點就是一段程序,這段程序可以在互聯網上自動查詢更新的網站
網站剛建好,沒有信息,聽說有個什麼爬蟲,可以自動抓取,怎麼用?
你說的是自動採集的功能,這個需要插件支持自動採集並且你的空間也要支持自動採集...如果你的空間不許你使用採集功能是會把你的網站刪掉的.因為採集佔用的伺服器資源很高,幾乎沒有空間支持採集功能...你告訴我你使用的是什麼建站系統,我可以給你參考參考...如果你需要採集功能可以採用狂人採集器,和很多建站程序都有介面的!
另外搞採集一般都是搞垃圾站的...呵呵....
網路爬蟲是什麼,有很大的作用嗎?
【網路爬蟲】又被稱為網頁蜘蛛,聚焦爬蟲,網路機器人,在FOAF社區中間,更經常的稱為網頁追逐者,是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻做碧圓、自動索引、模擬程序或者蠕蟲。
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從慧悔萬維網上下載網頁,是搜索引擎的重要組成搐傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
如何利用python寫爬蟲程序
這里有比較詳細的介紹
blog.csdn/column/details/why-bug
java 網路爬蟲怎麼實現
代碼如下:package webspider;import java.util.HashSet;import java.util.PriorityQueue;import java.util.Set;import java.util.Queue;public class LinkQueue { 已訪問的 url *** private static Set visitedUrl = new HashSet(); 待訪問的 url *** private static Queue unVisitedUrl = new PriorityQueue(); 獲得URL隊列 public static Queue getUnVisitedUrl() { return unVisitedUrl; } 添加到訪問過的URL隊列中 public static void addVisitedUrl(String url) { visitedUrl.add(url); } 移除訪問過的URL public static void removeVisitedUrl(String url) { visitedUrl.remove(url); } 未訪問的URL出隊列 public static Object unVisitedUrlDeQueue() { return unVisitedUrl.poll(); } 保證每個 url 只被訪問一次 public static void addUnvisitedUrl(String url) { if (url != null && !url.trim().equals("") && !visitedUrl.contains(url) && !unVisitedUrl.contains(url)) unVisitedUrl.add(url); } 獲得已經訪問的URL數目 public static int getVisitedUrlNum() { return visitedUrl.size(); } 判斷未訪問的URL隊列中是否為空 public static boolean unVisitedUrlsEmpty() { return unVisitedUrl.isEmpty(); }}
如何用Java寫一個爬蟲
import java.io.File;import java.URL;import java.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 = "mzitu/share/ment-page-"; Pattern reg = Patternpile(">
網路爬蟲軟體怎麼使用?急!!!!!!!!!!
每個人寫的程序用法都不一樣,你自己再看下文檔吧,裡面應該有格式!別這么浪費分!
為什麼寫爬蟲都喜歡用python
有更加成熟的一種爬蟲腳本語言,而非框架。是通用的爬蟲軟體ForeSpider,內部自帶了一套爬蟲腳本語言。
從一個專業C++程序猿的角度說,網上流傳的各種Java爬蟲,Python爬蟲,Java需要運行於C++開發的虛擬機上,Python只是腳本語言,採集效率和性能如何能與強大的C++相提並論?C++直接控制系統的底層,對內存空間的控制和節省都是其他語言無法競爭的。首先,forespider的開發語言是C++,而且C++幾乎沒有現成的框架可以用,而火車採集器是用的C#。先從業界水平和良心來說,這個軟體可以做到從底層到上層都是他們的技術人員自己寫的,而非運用現成的框架結構。
其次,因為抓取金融行業的數據,數據量大,動態性強,而採集對象一般反爬蟲策略又很嚴格。所以,專門建立團隊開發不現實。請外包人員開發太貴。買現成的軟體,要考慮性價比。因為很多數據需要登錄,需要驗證碼,是JS生成的數據,是ajax,是協議,有加密的key,有層層的驗證機制等等,分析市面上所有找得到的爬蟲軟體,沒有找到其他一家可以完全把我們列表上的網站採集下來的軟體。forespider功能強大,這是很重要的一點。
第三,forespider在台式機上運行一天可以采400萬條數據,在伺服器上一天可以采8000萬條數據。這樣一來,數據更新速度明顯比以前快了幾十倍。從前抓一個7500萬的網站需要好幾個月,等抓完數據早都變化的不成樣子了,這是很多爬蟲的痛處。但是現在的更新速度只有兩三天。forespider的性能強大,這也是非常好的一點。
第四,其實完全可視化的採集也不需要計算機專業的。大致學習了之後就可以上手采。而且forespider關於數據的管理做的很好。一是軟體可以集成資料庫,在採集之前就可以建表。二是數據可以自動排重,對於金融這樣數據更新要求很高的行業,就特別合適。
第五,是關於免費的問題,我覺得免費的東西同時還能兼顧好用,只能是中國的盜版軟體和手機APP。大概是大家都習慣了在軟體上不花錢,所以都想找到免費的。forespider有免費版的,功能倒是不限制,但是採集數目每天有限制。
最好用的免費爬蟲工具是什麼?
如果說好用的爬蟲軟體,那確實很多,不過首推造數。
造數雲爬蟲,界面簡潔,操作超級簡便免下載。
現在我們有商務定製需求也會找造數的客服解決。效率很高,不錯。
㈧ 如何使用Java語言實現一個網頁爬蟲
Java開源Web爬蟲
Heritrix
Heritrix是一個開源,可擴展的web爬蟲項目。Heritrix設計成嚴格按照robots.txt文件的排除指示和META robots標簽。
更多Heritrix信息
WebSPHINX
WebSPHINX是一個Java類包和Web爬蟲的互動式開發環境。Web爬蟲(也叫作機器人或蜘蛛)是可以自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工作平台和WebSPHINX類包。
更多WebSPHINX信息
WebLech
WebLech是一個功能強大的Web站點下載與鏡像工具。它支持按功能需求來下載web站點並能夠盡可能模仿標准Web瀏覽器的行為。WebLech有一個功能控制台並採用多線程操作。
㈨ Java網路爬蟲怎麼實現
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。x0dx0a傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。對於垂直搜索來說,聚焦爬蟲,即有針對性地爬取特定主題網頁的爬蟲,更為適合。x0dx0ax0dx0a以下是一個使用java實現的簡單爬蟲核心代碼:x0dx0apublic void crawl() throws Throwable { x0dx0a while (continueCrawling()) { x0dx0a CrawlerUrl url = getNextUrl(); //獲取待爬取隊列中的下一個URL x0dx0a if (url != null) { x0dx0a printCrawlInfo(); x0dx0a String content = getContent(url); //獲取URL的文本信息 x0dx0a x0dx0a //聚焦爬蟲只爬取與主題內容相關的網頁,這里採用正則匹配簡單處理 x0dx0a if (isContentRelevant(content, this.regexpSearchPattern)) { x0dx0a saveContent(url, content); //保存網頁至本地 x0dx0a x0dx0a //獲取網頁內容中的鏈接,並放入待爬取隊列中 x0dx0a Collection urlStrings = extractUrls(content, url); x0dx0a addUrlsToUrlQueue(url, urlStrings); x0dx0a } else { x0dx0a System.out.println(url + " is not relevant ignoring ..."); x0dx0a } x0dx0a x0dx0a //延時防止被對方屏蔽 x0dx0a Thread.sleep(this.delayBetweenUrls); x0dx0a } x0dx0a } x0dx0a closeOutputStream(); x0dx0a}x0dx0aprivate CrawlerUrl getNextUrl() throws Throwable { x0dx0a CrawlerUrl nextUrl = null; x0dx0a while ((nextUrl == null) && (!urlQueue.isEmpty())) { x0dx0a CrawlerUrl crawlerUrl = this.urlQueue.remove(); x0dx0a //doWeHavePermissionToVisit:是否有許可權訪問該URL,友好的爬蟲會根據網站提供的"Robot.txt"中配置的規則進行爬取 x0dx0a //isUrlAlreadyVisited:URL是否訪問過,大型的搜索引擎往往採用BloomFilter進行排重,這里簡單使用HashMap x0dx0a //isDepthAcceptable:是否達到指定的深度上限。爬蟲一般採取廣度優先的方式。一些網站會構建爬蟲陷阱(自動生成一些無效鏈接使爬蟲陷入死循環),採用深度限制加以避免 x0dx0a if (doWeHavePermissionToVisit(crawlerUrl) x0dx0a && (!isUrlAlreadyVisited(crawlerUrl)) x0dx0a && isDepthAcceptable(crawlerUrl)) { x0dx0a nextUrl = crawlerUrl; x0dx0a // System.out.println("Next url to be visited is " + nextUrl); x0dx0a } x0dx0a } x0dx0a return nextUrl; x0dx0a}x0dx0aprivate String getContent(CrawlerUrl url) throws Throwable { x0dx0a //HttpClient4.1的調用與之前的方式不同 x0dx0a HttpClient client = new DefaultHttpClient(); x0dx0a HttpGet httpGet = new HttpGet(url.getUrlString()); x0dx0a StringBuffer strBuf = new StringBuffer(); x0dx0a HttpResponse response = client.execute(httpGet); x0dx0a if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) { x0dx0a HttpEntity entity = response.getEntity(); x0dx0a if (entity != null) { x0dx0a BufferedReader reader = new BufferedReader( x0dx0a new InputStreamReader(entity.getContent(), "UTF-8")); x0dx0a String line = null; x0dx0a if (entity.getContentLength() > 0) { x0dx0a strBuf = new StringBuffer((int) entity.getContentLength()); x0dx0a while ((line = reader.readLine()) != null) { x0dx0a strBuf.append(line); x0dx0a } x0dx0a } x0dx0a } x0dx0a if (entity != null) { x0dx0a nsumeContent(); x0dx0a } x0dx0a } x0dx0a //將url標記為已訪問 x0dx0a markUrlAsVisited(url); x0dx0a return strBuf.toString(); x0dx0a}x0dx0apublic static boolean isContentRelevant(String content, x0dx0aPattern regexpPattern) { x0dx0a boolean retValue = false; x0dx0a if (content != null) { x0dx0a //是否符合正則表達式的條件 x0dx0a Matcher m = regexpPattern.matcher(content.toLowerCase()); x0dx0a retValue = m.find(); x0dx0a } x0dx0a return retValue; x0dx0a}x0dx0apublic List extractUrls(String text, CrawlerUrl crawlerUrl) { x0dx0a Map urlMap = new HashMap(); x0dx0a extractHttpUrls(urlMap, text); x0dx0a extractRelativeUrls(urlMap, text, crawlerUrl); x0dx0a return new ArrayList(urlMap.keySet()); x0dx0a} x0dx0aprivate void extractHttpUrls(Map urlMap, String text) { x0dx0a Matcher m = (text); x0dx0a while (m.find()) { x0dx0a String url = m.group(); x0dx0a String[] terms = url.split("a href=\""); x0dx0a for (String term : terms) { x0dx0a // System.out.println("Term = " + term); x0dx0a if (term.startsWith("http")) { x0dx0a int index = term.indexOf("\""); x0dx0a if (index > 0) { x0dx0a term = term.substring(0, index); x0dx0a } x0dx0a urlMap.put(term, term); x0dx0a System.out.println("Hyperlink: " + term); x0dx0a } x0dx0a } x0dx0a } x0dx0a} x0dx0aprivate void extractRelativeUrls(Map urlMap, String text, x0dx0a CrawlerUrl crawlerUrl) { x0dx0a Matcher m = relativeRegexp.matcher(text); x0dx0a URL textURL = crawlerUrl.getURL(); x0dx0a String host = textURL.getHost(); x0dx0a while (m.find()) { x0dx0a String url = m.group(); x0dx0a String[] terms = url.split("a href=\""); x0dx0a for (String term : terms) { x0dx0a if (term.startsWith("/")) { x0dx0a int index = term.indexOf("\""); x0dx0a if (index > 0) { x0dx0a term = term.substring(0, index); x0dx0a } x0dx0a String s = //" + host + term; x0dx0a urlMap.put(s, s); x0dx0a System.out.println("Relative url: " + s); x0dx0a } x0dx0a } x0dx0a } x0dx0a x0dx0a}x0dx0apublic static void main(String[] args) { x0dx0a try { x0dx0a String url = ""; x0dx0a Queue urlQueue = new LinkedList(); x0dx0a String regexp = "java"; x0dx0a urlQueue.add(new CrawlerUrl(url, 0)); x0dx0a NaiveCrawler crawler = new NaiveCrawler(urlQueue, 100, 5, 1000L, x0dx0a regexp); x0dx0a // boolean allowCrawl = crawler.areWeAllowedToVisit(url); x0dx0a // System.out.println("Allowed to crawl: " + url + " " + x0dx0a // allowCrawl); x0dx0a crawler.crawl(); x0dx0a } catch (Throwable t) { x0dx0a System.out.println(t.toString()); x0dx0a t.printStackTrace(); x0dx0a } x0dx0a}
㈩ 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.91mntu.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++);
}
}
}
}