導航:首頁 > 源碼編譯 > 網路爬蟲編譯代碼

網路爬蟲編譯代碼

發布時間:2022-07-25 13:20:55

⑴ 用java編寫 網路爬蟲求代碼和流程 急

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.table.*;//一個Web的爬行者(註:爬行在這里的意思與抓取,捕獲相同)
public class SearchCrawler extends JFrame{
//最大URL保存值
private static final String[] MAX_URLS={"50","100","500","1000"};

//緩存robot禁止爬行列表
private HashMap disallowListCache=new HashMap();

//搜索GUI控制項
private JTextField startTextField;
private JComboBox maxComboBox;
private JCheckBox limitCheckBox;
private JTextField logTextField;
private JTextField searchTextField;
private JCheckBox caseCheckBox;
private JButton searchButton;

//搜索狀態GUI控制項
private JLabel crawlingLabel2;
private JLabel crawledLabel2;
private JLabel toCrawlLabel2;
private JProgressBar progressBar;
private JLabel matchesLabel2;

//搜索匹配項表格列表
private JTable table;

//標記爬行機器是否正在爬行
private boolean crawling;

//寫日誌匹配文件的引用
private PrintWriter logFileWriter;

//網路爬行者的構造函數
public SearchCrawler(){
//設置應用程序標題欄
setTitle("搜索爬行者");
//設置窗體大小
setSize(600,600);

//處理窗體關閉事件
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
actionExit();
}
});

//設置文件菜單
JMenuBar menuBar=new JMenuBar();
JMenu fileMenu=new JMenu("文件");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem fileExitMenuItem=new JMenuItem("退出",KeyEvent.VK_X);
fileExitMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionExit();
}
});
fileMenu.add(fileExitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);

python爬蟲程序要用到哪些知識和技術

1.對網頁結構需要有一個基本的了解和認知。
我們平時上網瀏覽網頁,信息展現在瀏覽器裡面的頁面中,但我們用爬蟲要抓取的信息是放在網頁源代碼裡面的。(圖1為我們看到的頁面,圖2
為頁面對應的網頁源代碼)
在瀏覽器中使用快捷鍵F12來調出該界面,這個界面稱為開發者模式
2.知道如何去找到我們需要的信息在網頁源代碼的那個位置。
一般來說信息可能直接存在於網頁的html頁面中,但是有一些動態載入的信息可能存在於js頁面中。有一些網站,它的數據價值比較高,總會有競爭對手去抓取它的數據,所以它就會有比較厲害的反抓取措施,一般新手很難應付這種反抓取措施。一般的靜態網頁要求你對瀏覽器的開發者模式很熟悉,能夠利用這個工具去定位自己需要的信息在網頁源代碼中的那個位置,網上有相關教程,搜一下就能找到,更復雜的動態網頁,就需要你對動態載入的網頁有點研究才行。這些知識點和技能,都是需要自己動手去嘗試才能學會的。
3.知道用什麼python程序庫去完成網頁源代碼的下載,解析,數據提取,存儲。
python是一門很簡單的編程語言,一方面是因為python的語法簡潔,另一方面是因為在python社區,已經有很多很多的人為我們貢獻了很多很多開源的程序庫,我們在編寫程序的時候,直接調用這些程序庫,就能夠省下很多很多工作量。

⑶ 如何編寫一個簡易網路爬蟲

運行下這段代碼看看效果 這是最簡單的爬蟲了

importurllib.request
url='http://www.mafengwo.cn/group/s.php'

fp=urllib.request.urlopen(url)
mybytes=fp.read()

mystr=mybytes.decode("utf8")#說明接收的數據是UTF-8格式(這樣子可以解析和顯示中文)

fp.close()

print(mystr)

⑷ 你好,我有個JAVA的爬蟲代碼,txt的,但是不知道怎麼使用它爬網路上的數據。可不可以指點下

你有的是代碼(源碼)?如果是源碼,請把它另存為.java文件,然後使用jdk編譯成class文件,然後用java命令執行試試。

⑸ 求網路爬蟲源代碼VC++編寫的

爬蟲類的程序最好用C#或C++/CLI完全用C++實現的要做大量Http協議和Html解析的東西,使用 .Net類庫的Http下載和正則表達式可以非常方便地做這些東西。

⑹ python爬蟲簡單代碼怎麼寫

import requests
import you_get

# 系統模塊包
import sys
import json

url = '視頻的播放地址'

path = './shipin'

def downloadshipin(url,path):
'''
#:param url: 視頻播放的地址
#:param path: 視頻下載保存的路徑
#:return:
'''
# 調用cmd指令
sys.argv = ['you_get','-o',path,url]
you_get.main()

def Extractshipin():
'''
提取網頁當中的視頻播放地址
:return:
'''
urls = ''
headers = {
'user-agent':''
}
response = requests.get(urls,headers=headers).text
json_data = json.loads(response[37:-1])
data = json_data['result']

for i in data:
shipin_url = i['arcurl']
path = './shipin'
downloadshipin(shipin_url,path)

Extractshipin()

⑺ 跪求一份java網路爬蟲的源代碼急用!!

希望能幫到你 . . . 這個可以解決你的問題 但是沒有樣式的.只是爬了源代碼

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class WebPageSource {
public static void main(String args[]){
URL url;
int responsecode;
HttpURLConnection urlConnection;
BufferedReader reader;
BufferedWriter writer;
String line;
try{
//生成一個URL對象,要獲取源代碼的網頁地址為:http://www.sina.com.cn
url=new URL("http://www.sina.com.cn");
//打開URL
urlConnection = (HttpURLConnection)url.openConnection();
//獲取伺服器響應代碼
responsecode=urlConnection.getResponseCode();
if(responsecode==200){
//得到輸入流,即獲得了網頁的內容
reader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"GBK"));
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("d://test.txt"))));
while((line=reader.readLine())!=null){
writer.write(line);
writer.newLine();
}
}
else{
System.out.println("獲取不到網頁的源碼,伺服器響應代碼為:"+responsecode);
}
}
catch(Exception e){
System.out.println("獲取不到網頁的源碼,出現異常:"+e);
}
}
}

⑻ 用java編寫 網路爬蟲(又稱網路蜘蛛)程序,即一個網路搜索引擎。尋求代碼!急!

建議你自己寫一個程序, 原理如下:

1)用程序調用 IE 或 Firefox 去打開網頁。
2)用瀏覽器提供的 API 去取網頁裡面的資源。
3)根據需要再解釋網頁裡面的 URL ,然後再調用1)的步驟繼續。

以上就是網路爬蟲(又稱網路蜘蛛)程序的做法。

⑼ java 網路爬蟲怎麼實現

以爬取豆瓣《紅海行動》的所有評論為例,目標是爬取所有評論以及發表評論的用戶名。

getHtml()類,首先是URL url1=new URL(url);模擬在網頁輸入網址,接著 URLConnection uc=url1.openConnection();模擬敲回車鍵打開該網址頁面,後面的看注釋應該能看懂了。bf.readLine()是依次每行讀取頁面的源碼,

/**
* 下載HTML頁面源碼
* @author yangjianxin
* @return string @author yangjianxin
* @time 2018-03-09
*/

public static String getHtml(String url,String encoding) {
StringBuffer sb=new StringBuffer();
BufferedReader bf = null;
InputStreamReader isr = null;
try {
//創建網路連接
URL url1=new URL(url);
//打開網路
URLConnection uc=url1.openConnection();
uc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//建立文件輸入流
isr=new InputStreamReader(uc.getInputStream(),encoding);
//高效率讀取
bf=new BufferedReader(isr);
//下載頁面源碼

String temp=null;
while((temp=bf.readLine())!=null) {
sb.append(temp+"\n");
}
//System.out.println(sb.toString());

} catch (MalformedURLException e) {
System.out.println("網頁打開失敗,請重新輸入網址。");
e.printStackTrace();
}catch (IOException e) {
System.out.println("網頁打開失敗,請檢查網路。");
e.printStackTrace();
}finally {
if(bf!=null) {try {
bf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(isr!=null) {
try {
isr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
return sb.toString();

}

getGoalDate()類,Document document=Jsoup.parse(html),運用Jsoup.parse()解析網頁源碼,接著就是開始確定自己需要爬取的東西在網頁里的位置,這需要我們對html有點了解,能看、讀懂網頁標簽,可以看出當前頁面的所有評論都在id為"content"的大盒子里,每條評論都在class名為"main review-item"的小盒子里, for(Element el:elments)是指對象el在當前頁面循環去小盒子"main review-item"查找我們要爬取的東西,也就是用戶名和評論, String name=el.getElementsByClass("name").text()中的「name」可以在當前盒子里查找到用戶名,用.text()將它賦予給變數name,同理評論也是這樣抓取,如果不用將它存入磁碟,則可以後面那段文件操作刪除,只列印就行

⑽ 求一個網路爬蟲的完整代碼,需要能自動遞歸爬取站內頁面



importjava.net.*;
importjava.io.*;
importjava.util.regex.*;

//搜索Web爬行者
{

/*
*disallowListCache緩存robot不允許搜索的URL。Robot協議在Web站點的根目錄下設置一個robots.txt文件,
*規定站點上的哪些頁面是限制搜索的。搜索程序應該在搜索過程中跳過這些區域,下面是robots.txt的一個例子:#robots.txtfor
*http://somehost.com/User-agent:*Disallow:/cgi-bin/Disallow:
*/registration#/:/login
*/

privateHashMap<String,ArrayList<String>>disallowListCache=newHashMap<String,ArrayList<String>>();
ArrayList<String>errorList=newArrayList<String>();//錯誤信息
ArrayList<String>result=newArrayList<String>();//搜索到的結果
StringstartUrl;//開始搜索的起點
intmaxUrl;//最大處理的url數
StringsearchString;//要搜索的字元串(英文)
booleancaseSensitive=false;//是否區分大小寫
booleanlimitHost=false;//是否在限制的主機內搜索

publicSearchCrawler(StringstartUrl,intmaxUrl,StringsearchString){
this.startUrl=startUrl;
this.maxUrl=maxUrl;
this.searchString=searchString;
}

publicArrayList<String>getResult(){
returnresult;
}

publicvoidrun(){//啟動搜索線程

crawl(startUrl,maxUrl,searchString,limitHost,caseSensitive);
}

//檢測URL格式
privateURLverifyUrl(Stringurl){
//只處理HTTPURLs.
if(!url.toLowerCase().startsWith("http://"))
returnnull;

URLverifiedUrl=null;
try{
verifiedUrl=newURL(url);
}catch(Exceptione){
returnnull;
}

returnverifiedUrl;
}

//檢測robot是否允許訪問給出的URL.
privatebooleanisRobotAllowed(URLurlToCheck){
Stringhost=urlToCheck.getHost().toLowerCase();//獲取給出url的主機
//System.out.println("主機="+host);

//獲取主機不允許搜索的URL緩存
ArrayList<String>disallowList=disallowListCache.get(host);

//如果還沒有緩存,下載並緩存。
if(disallowList==null){
disallowList=newArrayList<String>();
try{
URLrobotsFileUrl=newURL("http://"+host+"/robots.txt");
BufferedReaderreader=newBufferedReader(
newInputStreamReader(robotsFileUrl.openStream()));

//讀robot文件,創建不允許訪問的路徑列表。
Stringline;
while((line=reader.readLine())!=null){
if(line.indexOf("Disallow:")==0){//是否包含"Disallow:"
StringdisallowPath=line.substring("Disallow:"
.length());//獲取不允許訪問路徑

//檢查是否有注釋。
intcommentIndex=disallowPath.indexOf("#");
if(commentIndex!=-1){
disallowPath=disallowPath.substring(0,
commentIndex);//去掉注釋
}

disallowPath=disallowPath.trim();
disallowList.add(disallowPath);
}
}

//緩存此主機不允許訪問的路徑。
disallowListCache.put(host,disallowList);
}catch(Exceptione){
returntrue;//web站點根目錄下沒有robots.txt文件,返回真
}
}

Stringfile=urlToCheck.getFile();
//System.out.println("文件getFile()="+file);
for(inti=0;i<disallowList.size();i++){
Stringdisallow=disallowList.get(i);
if(file.startsWith(disallow)){
returnfalse;
}
}

returntrue;
}

privateStringdownloadPage(URLpageUrl){
try{
//OpenconnectiontoURLforreading.
BufferedReaderreader=newBufferedReader(newInputStreamReader(
pageUrl.openStream()));

//Readpageintobuffer.
Stringline;
StringBufferpageBuffer=newStringBuffer();
while((line=reader.readLine())!=null){
pageBuffer.append(line);
}

returnpageBuffer.toString();
}catch(Exceptione){
}

returnnull;
}

//從URL中去掉"www"
privateStringremoveWwwFromUrl(Stringurl){
intindex=url.indexOf("://www.");
if(index!=-1){
returnurl.substring(0,index+3)+url.substring(index+7);
}

return(url);
}

//解析頁面並找出鏈接
privateArrayList<String>retrieveLinks(URLpageUrl,StringpageContents,
HashSetcrawledList,booleanlimitHost){
//用正則表達式編譯鏈接的匹配模式。
Patternp=Pattern.compile("<a\s+href\s*=\s*"?(.*?)["|>]",
Pattern.CASE_INSENSITIVE);
Matcherm=p.matcher(pageContents);

ArrayList<String>linkList=newArrayList<String>();
while(m.find()){
Stringlink=m.group(1).trim();

if(link.length()<1){
continue;
}

//跳過鏈到本頁面內鏈接。
if(link.charAt(0)=='#'){
continue;
}

if(link.indexOf("mailto:")!=-1){
continue;
}

if(link.toLowerCase().indexOf("javascript")!=-1){
continue;
}

if(link.indexOf("://")==-1){
if(link.charAt(0)=='/'){//處理絕對地
link="http://"+pageUrl.getHost()+":"
+pageUrl.getPort()+link;
}else{
Stringfile=pageUrl.getFile();
if(file.indexOf('/')==-1){//處理相對地址
link="http://"+pageUrl.getHost()+":"
+pageUrl.getPort()+"/"+link;
}else{
Stringpath=file.substring(0,
file.lastIndexOf('/')+1);
link="http://"+pageUrl.getHost()+":"
+pageUrl.getPort()+path+link;
}
}
}

intindex=link.indexOf('#');
if(index!=-1){
link=link.substring(0,index);
}

link=removeWwwFromUrl(link);

URLverifiedLink=verifyUrl(link);
if(verifiedLink==null){
continue;
}

/*如果限定主機,排除那些不合條件的URL*/
if(limitHost
&&!pageUrl.getHost().toLowerCase()
.equals(verifiedLink.getHost().toLowerCase())){
continue;
}

//跳過那些已經處理的鏈接.
if(crawledList.contains(link)){
continue;
}

linkList.add(link);
}

return(linkList);
}

//搜索下載Web頁面的內容,判斷在該頁面內有沒有指定的搜索字元串

(StringpageContents,
StringsearchString,booleancaseSensitive){
StringsearchContents=pageContents;
if(!caseSensitive){//如果不區分大小寫
searchContents=pageContents.toLowerCase();
}

Patternp=Pattern.compile("[\s]+");
String[]terms=p.split(searchString);
for(inti=0;i<terms.length;i++){
if(caseSensitive){
if(searchContents.indexOf(terms[i])==-1){
returnfalse;
}
}else{
if(searchContents.indexOf(terms[i].toLowerCase())==-1){
returnfalse;
}
}
}

returntrue;
}

//執行實際的搜索操作
publicArrayList<String>crawl(StringstartUrl,intmaxUrls,
StringsearchString,booleanlimithost,booleancaseSensitive){

System.out.println("searchString="+searchString);
HashSet<String>crawledList=newHashSet<String>();
LinkedHashSet<String>toCrawlList=newLinkedHashSet<String>();

if(maxUrls<1){
errorList.add("InvalidMaxURLsvalue.");
System.out.println("InvalidMaxURLsvalue.");
}

if(searchString.length()<1){
errorList.add("MissingSearchString.");
System.out.println("MissingsearchString");
}

if(errorList.size()>0){
System.out.println("err!!!");
returnerrorList;
}

//從開始URL中移出www
startUrl=removeWwwFromUrl(startUrl);

toCrawlList.add(startUrl);
while(toCrawlList.size()>0){

if(maxUrls!=-1){
if(crawledList.size()==maxUrls){
break;
}
}

//GetURLatbottomofthelist.
Stringurl=toCrawlList.iterator().next();

//RemoveURLfromthetocrawllist.
toCrawlList.remove(url);

//ConvertstringurltoURLobject.
URLverifiedUrl=verifyUrl(url);

//.
if(!isRobotAllowed(verifiedUrl)){
continue;
}

//增加已處理的URL到crawledList
crawledList.add(url);
StringpageContents=downloadPage(verifiedUrl);

if(pageContents!=null&&pageContents.length()>0){
//從頁面中獲取有效的鏈接
ArrayList<String>links=retrieveLinks(verifiedUrl,
pageContents,crawledList,limitHost);

toCrawlList.addAll(links);

if(searchStringMatches(pageContents,searchString,
caseSensitive)){
result.add(url);
System.out.println(url);
}
}

}
returnresult;
}

//主函數
publicstaticvoidmain(String[]args){
if(args.length!=3){
System.out
.println("Usage:");
return;
}
intmax=Integer.parseInt(args[1]);
SearchCrawlercrawler=newSearchCrawler(args[0],max,args[2]);
Threadsearch=newThread(crawler);
System.out.println("Startsearching...");
System.out.println("result:");
search.start();

}
}

參考:http://www.cnblogs.com/tjsquall/archive/2007/12/22/1010831.html

閱讀全文

與網路爬蟲編譯代碼相關的資料

熱點內容
pdf轉dwg怎麼轉 瀏覽:53
單片機微小電阻測量 瀏覽:136
表格25兆怎麼壓縮 瀏覽:67
java開發公司的 瀏覽:129
東風天錦壓縮車工作指示燈不亮 瀏覽:983
劍俠情緣1源碼 瀏覽:530
cad2011怎麼轉換成pdf格式 瀏覽:964
傳祺gs5安卓車機如何還原車機 瀏覽:900
單片機和編程器互相傳輸數據 瀏覽:90
app訂單怎麼取消 瀏覽:467
程序員用雙顯示器有什麼作用 瀏覽:611
網約車演算法殺熟 瀏覽:6
卡薩帝用的什麼壓縮機 瀏覽:155
350乘20演算法 瀏覽:90
自助編程軟體app 瀏覽:438
伺服器如何看日活數 瀏覽:686
數控車床原理圖及編程 瀏覽:289
java文件流下載 瀏覽:340
編程工作工資多少 瀏覽:441
專業安全文件夾 瀏覽:781