當前位置:首頁 » 操作系統 » chen源碼

chen源碼

發布時間: 2022-07-14 07:03:38

『壹』 如何在原有的網站上再添加一套網站源碼

如果是你新下的源碼更符合你現在的需求 也就是能增加功能,那你直接把之前的資料庫導入到新下的源碼站就可以了。至於之前的若要保留的話可以在目錄下(根目錄就可以自己找的到就行)備份一下就行了。指向問題第一肯定是域名已經指向到根目錄的前提下設置訪問時第一打開的頁面,index.html、index.php或是你直接設置的一個。
如果你下的源碼不是整站的那種也或者說是不帶前台頁面部分的源碼。而你又要保留現有前台的頁面樣式,這樣就等同於將新下載的源碼文件重新與頁面整合,我們叫重新做功能。這個環節就比較難了需要程序員完成。有需要的話發郵件給我[email protected] 可以幫你看看

『貳』 有人有簡單爬蟲源碼可以學習嗎

爬蟲學習之一個簡單的網路爬蟲

概述

這是一個網路爬蟲學習的技術分享,主要通過一些實際的案例對爬蟲的原理進行分析,達到對爬蟲有個基本的認識,並且能夠根據自己的需要爬到想要的數據。有了數據後可以做數據分析或者通過其他方式重新結構化展示。

什麼是網路爬蟲

網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。via網路網路爬蟲
網路蜘蛛(Web spider)也叫網路爬蟲(Web crawler)[1],螞蟻(ant),自動檢索工具(automatic indexer),或者(在FOAF軟體概念中)網路疾走(WEB scutter),是一種「自動化瀏覽網路」的程序,或者說是一種網路機器人。它們被廣泛用於互聯網搜索引擎或其他類似網站,以獲取或更新這些網站的內容和檢索方式。它們可以自動採集所有其能夠訪問到的頁面內容,以供搜索引擎做進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們需要的信息。via維基網路網路蜘蛛

以上是網路和維基網路對網路爬蟲的定義,簡單來說爬蟲就是抓取目標網站內容的工具,一般是根據定義的行為自動進行抓取,更智能的爬蟲會自動分析目標網站結構類似與搜索引擎的爬蟲,我們這里只討論基本的爬蟲原理。

###爬蟲工作原理

網路爬蟲框架主要由控制器、解析器和索引庫三大部分組成,而爬蟲工作原理主要是解析器這個環節,解析器的主要工作是下載網頁,進行頁面的處理,主要是將一些JS腳本標簽、CSS代碼內容、空格字元、HTML標簽等內容處理掉,爬蟲的基本工作是由解析器完成。所以解析器的具體流程是:

入口訪問->下載內容->分析結構->提取內容

分析爬蟲目標結構

這里我們通過分析一個網站[落網:http://luoo.net] 對網站內容進行提取來進一步了解!

第一步 確定目的
抓取目標網站的某一期所有音樂

第二步 分析頁面結構
訪問落網的某一期刊,通過Chrome的開發者模式查看播放列表中的歌曲,右側用紅色框線圈出來的是一些需要特別注意的語義結構,見下圖所示:

以上紅色框線圈出的地方主要有歌曲名稱,歌曲的編號等,這里並沒有看到歌曲的實際文件地址,所以我們繼續查看,點擊某一個歌曲就會立即在瀏覽器中播放,這時我們可以看到在Chrome的開發者模式的Network中看到實際請求的播放文件,如下圖所示:

根據以上分析我們可以得到播放清單的位置和音樂文件的路徑,接下來我們通過python來實現這個目的。

實現爬蟲

Python環境安裝請自行Google

主要依賴第三方庫

Requests(http://www.python-requests.org) 用來發起請求
BeautifulSoup(bs4) 用來解析HTML結構並提取內容
faker(http://fake-factory.readthedocs.io/en/stable/)用來模擬請求UA(User-Agent)

主要思路是分成兩部分,第一部分用來發起請求分析出播放列表然後丟到隊列中,第二部分在隊列中逐條下載文件到本地,一般分析列錶速度更快,下載速度比較慢可以藉助多線程同時進行下載。
主要代碼如下:

#-*- coding: utf-8 -*-'''by sudo rm -rf http://imchenkun.com'''import osimport requestsfrom bs4 import BeautifulSoupimport randomfrom faker import Factoryimport Queueimport threadingfake = Factory.create()luoo_site = 'http://www.luoo.net/music/'luoo_site_mp3 = 'http://luoo-mp3.kssws.ks-cdn.com/low/luoo/radio%s/%s.mp3'proxy_ips = [ '27.15.236.236' ] # 替換自己的代理IPheaders = { 'Connection': 'keep-alive', 'User-Agent': fake.user_agent() }def random_proxies(): ip_index = random.randint(0, len(proxy_ips)-1) res = { 'http': proxy_ips[ip_index] } return resdef fix_characters(s): for c in ['<', '>', ':', '"', '/', '\\', '|', '?', '*']: s = s.replace(c, '') return sclass LuooSpider(threading.Thread): def __init__(self, url, vols, queue=None): threading.Thread.__init__(self) print '[luoo spider]' print '=' * 20 self.url = url self.queue = queue self.vol = '1' self.vols = vols def run(self): for vol in self.vols: self.spider(vol) print '\ncrawl end\n\n' def spider(self, vol): url = luoo_site + vol print 'crawling: ' + url + '\n' res = requests.get(url, proxies=random_proxies()) soup = BeautifulSoup(res.content, 'html.parser') title = soup.find('span', attrs={'class': 'vol-title'}).text cover = soup.find('img', attrs={'class': 'vol-cover'})['src'] desc = soup.find('div', attrs={'class': 'vol-desc'}) track_names = soup.find_all('a', attrs={'class': 'trackname'}) track_count = len(track_names) tracks = [] for track in track_names: _id = str(int(track.text[:2])) if (int(vol) < 12) else track.text[:2] # 12期前的音樂編號1~9是1位(如:1~9),之後的都是2位 1~9會在左邊墊0(如:01~09) _name = fix_characters(track.text[4:]) tracks.append({'id': _id, 'name': _name}) phases = { 'phase': vol, # 期刊編號 'title': title, # 期刊標題 'cover': cover, # 期刊封面 'desc': desc, # 期刊描述 'track_count': track_count, # 節目數 'tracks': tracks # 節目清單(節目編號,節目名稱) } self.queue.put(phases)class LuooDownloader(threading.Thread): def __init__(self, url, dist, queue=None): threading.Thread.__init__(self) self.url = url self.queue = queue self.dist = dist self.__counter = 0 def run(self): while True: if self.queue.qsize() <= 0: pass else: phases = self.queue.get() self.download(phases) def download(self, phases): for track in phases['tracks']: file_url = self.url % (phases['phase'], track['id']) local_file_dict = '%s/%s' % (self.dist, phases['phase']) if not os.path.exists(local_file_dict): os.makedirs(local_file_dict) local_file = '%s/%s.%s.mp3' % (local_file_dict, track['id'], track['name']) if not os.path.isfile(local_file): print 'downloading: ' + track['name'] res = requests.get(file_url, proxies=random_proxies(), headers=headers) with open(local_file, 'wb') as f: f.write(res.content) f.close() print 'done.\n' else: print 'break: ' + track['name']if __name__ == '__main__': spider_queue = Queue.Queue() luoo = LuooSpider(luoo_site, vols=['680', '721', '725', '720'],queue=spider_queue) luoo.setDaemon(True) luoo.start() downloader_count = 5 for i in range(downloader_count): luoo_download = LuooDownloader(luoo_site_mp3, 'D:/luoo', queue=spider_queue) luoo_download.setDaemon(True) luoo_download.start()

以上代碼執行後結果如下圖所示


Github地址:https://github.com/imchenkun/ick-spider/blob/master/luoospider.py

總結

通過本文我們基本了解了網路爬蟲的知識,對網路爬蟲工作原理認識的同時我們實現了一個真實的案例場景,這里主要是使用一些基礎的第三方Python庫來幫助我們實現爬蟲,基本上演示了網路爬蟲框架中基本的核心概念。通常工作中我們會使用一些比較優秀的爬蟲框架來快速的實現需求,比如scrapy框架,接下來我會通過使用Scrapy這類爬蟲框架來實現一個新的爬蟲來加深對網路爬蟲的理解!

『叄』 C++ 網上找的源碼 編譯通不過 源碼如下 麻煩大家幫我看看需要怎麼改 我是VC新手 之前用delphi

源碼呢

『肆』 C語言:要完整的源代碼;(用C語言編程),請將源代碼發送到我的郵箱[email protected],好的話我可以加分

#include<iostream.h>
void chen(int num[],int n,int shotnum,int *jieguo,int &jlength)//乘
{

long *temp=new long[n];
int temp1[100];
int j=0;
for(int i=0;i<n;i++)
{
temp[i]=num[i]*shotnum;
}
for(i=n-1;i>=0;i--)
{
temp1[j++]=temp[i]%10;
if(i!=0) temp[i-1]+=temp[i]/10;
else
{
do
{
temp[0]/=10;
if(temp[0]==0) break;
temp1[j++]=temp[0]%10;
}while(1);
}
}
for(i=0;i<j;i++) jieguo[i]=temp1[j-i-1];
jlength=j;
delete []temp;
}
void chu(int num[],int n,int shotnum,int *jieguo,int &jlength)//除
{
int sum=0,temp;
int j=0;
for(int i=0;i<n;i++)
{
sum=sum*10+num[i];
temp=sum/shotnum;
if(j||temp)
{
jieguo[j++]=temp;
sum=sum%shotnum;
}
}
jlength=j;
}
void main()
{
int num[10]={1,2,3,4,5,6,7,8,9,8};
int jieguo[100];
int shotnum=16;
int nlength;
chen(num,10,shotnum,jieguo,nlength);
for(int i=0;i<nlength;i++) cout<<jieguo[i];

chu(num,10,shotnum,jieguo,nlength);
for(i=0;i<nlength;i++) cout<<jieguo[i];
}
//寫程序不容易啊,希望對你有幫助

『伍』 如何刪除源碼包安裝的文件

回復
chenyx
軟體名字我知道,不過他安裝的時候,我記得安裝配置文件什麼的到好幾個目錄裡面。那麼我如果要刪除的話,需要進目錄一個一個刪除?

『陸』 求java編寫打字游戲源代碼!

package chen;

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.Vector;
import javax.swing.JFrame;

public class keyTest extends Window implements KeyListener, Runnable {

int width, height;
BufferedImage buf;
Graphics gc;
boolean play = true;
Vector<oneChar> keys = new Vector<oneChar>();
int ok = 0, fail = 0, error = 0, sum = 0;
Font small = new Font("宋體", 0, 30);
Font big = new Font("宋體", 0, 50);
long time = System.currentTimeMillis();

keyTest(Frame f) {
super(f);
Dimension s = getToolkit().getScreenSize();
width = (int) s.getWidth();
height = (int) s.getHeight();
this.setBounds(0, 0, width, height);
this.buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
gc = buf.getGraphics();
this.setVisible(true);
this.setAlwaysOnTop(true);
this.buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
gc = buf.getGraphics();
new Thread(this).start();

}

public static void main(String s[]) {
JFrame help = new JFrame("打字練習");
help.setVisible(true);
help.setDefaultCloseOperation(3);
help.addKeyListener(new keyTest(help));

}

public void keyTyped(KeyEvent e) {
}

public synchronized void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 27) {
play = false;
this.dispose();
System.exit(0);
}
char s = e.getKeyChar();
if (s >= 'a' && s <= 'z' || (s >= 'A' && s <= 'Z')) {
String l = "" + s;
for (int i = 0; i < keys.size(); i++) {
if (l.equals(((oneChar) keys.elementAt(i)).s)) {
keys.removeElementAt(i);
ok++;
return;
}
}
error++;
}
}

public void keyReleased(KeyEvent e) {
}

@Override
public void update(Graphics g) {

gc.setColor(Color.BLACK);
gc.fillRect(0, 0, width, height);
gc.setColor(Color.red);
int l = (ok + error) > 0 ? (ok * 100 / (ok + error)) : 100;
gc.setFont(small);
gc.drawString("成功:" + ok + " 錯誤:" + error + " 失敗:" + fail + " 正確率:" + l + "% 時間:" + (System.currentTimeMillis() - time) / 1000, 10, height - 30);
gc.setFont(big);
oneChar o;
for (int i = 0; i < keys.size(); i++) {
o = keys.elementAt(i);
gc.setColor(o.c);
gc.drawString(o.s, o.x, o.y += 6);
if (o.y > height - 10) {
fail++;
keys.removeElementAt(i);
}
}
g.drawImage(buf, 0, 0, null);
}

public void run() {
while (play) {
try {
sum++;
if (sum % 5 == 0) {
newchar();
}
Thread.sleep(80);
repaint();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}

private void newchar() {
keys.add(oneChar.getinstance(width));
}
}
package chen;

import java.awt.Color;

public class oneChar {

static java.util.Random r = new java.util.Random();

public static oneChar getinstance(int maxX) {
oneChar a = new oneChar();
int b = r.nextInt(26);
a.s = "" + (char) (b + (r.nextInt(4) > 1 ? 'a' : 'A'));
a.x = r.nextInt(maxX - 30);
a.c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));
return a;
}
int x, y;
Color c;
String s;
}

『柒』 如何偽造tcp數據包,並進行正確的校驗的例子演示及源碼

下面的程序是在linux下進行tcp偽造的一個例子:涉及原始套接字和tcp的校驗演算法

/************************tcp_pseudo.c********************/
/** Author :cbchen. */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INTERFACE "eth0"
#define IP ""
/*Prototype area*/
int Open_Packet_Socket();
int Open_Raw_Socket();
int Set_Promisc(char *interface, int sock);
void send_tcp_ack(int sockfd,struct sockaddr_in *addr);
unsigned short check_sum(unsigned short *addr,int len);
struct ip *iprecv;
struct tcphdr *tcprecv;
struct sockaddr_in addr;

int main()
{
int sockfd,sendfd,bytes_recieved;

char buffer[1518];
u_char *buf2;
char saddr[20],daddr[20];

sockfd=Open_Packet_Socket();
sendfd=Open_Raw_Socket();
//printf("sockfd:%d/tsendfd:%d/n",sockfd,sendfd);

int on=1;
/******** 設置IP數據包格式,告訴系統內核模塊IP數據包由我們自己來填寫 ***/
setsockopt(sendfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));
Set_Promisc(INTERFACE, sockfd);
int count=1;

while(1)
{

bytes_recieved = recvfrom(sockfd, buffer, 1518, 0, NULL, NULL);

buf2=buffer;
buf2+=14;
iprecv=(struct ip *)buf2;
//iprecv+=sizeof(struct ethhdr*);
/*See if this is a TCP packet*/
if(iprecv->ip_v == 4&iprecv->ip_p == 6) {
printf("---------------------------Number %d packet-----------------------------------------------/n",count);
count++;
printf("/nBytes received ::: %5d/n",bytes_recieved);
printf("ip version:%u/n",iprecv->ip_v);

printf("IP包頭解碼:/n");
printf("Source ip:%s/t",inet_ntoa(iprecv->ip_src));
printf("Dest ip:%s/t",inet_ntoa(iprecv->ip_dst));
printf("proto:%u/n",iprecv->ip_p);
buf2+=iprecv->ip_hl<<2;
printf("TCP包頭解碼:/n");
tcprecv = (struct tcphdr*)buf2;
//tcprecv = (struct tcphdr *)(buffer + (iprecv->ip_hl<<2));
printf("Source port :::%d/n",ntohs(tcprecv->source));
printf("Dest port :::%d/n",ntohs(tcprecv->dest));
printf("seq num:%u/n",ntohl(tcprecv->seq));
printf("ack num:%u/n",ntohl(tcprecv->ack_seq));
printf("urg:%x/tack:%x/tpsh:%x/trst:%x/tsyn:%x/tfin:%x/n",tcprecv->urg,tcprecv->ack,tcprecv->psh,tcprecv->rst,tcprecv->syn,tcprecv->fin);
bzero(&addr,sizeof(struct sockaddr_in));
addr.sin_family=AF_INET;
//addr2.sin_port=htons(thdr->source);
addr.sin_port=tcprecv->source;
//addr2.sin_addr=iphdr->ip_src;
addr.sin_addr=iprecv->ip_src;

/********* 發送阻隔包了!!!! ****/
if(tcprecv->syn==1&tcprecv->urg!=1&tcprecv->ack!=1&tcprecv->psh!=1&tcprecv->rst!=1&tcprecv->fin!=1)
{
//send_tcp_ack(sendfd,&addr);
//printf("It's a syn pocket!/n");
}
}
}
close(sockfd);
close(sendfd);
}
//end main

/******* 發送阻隔包的實現 *********/
/*
void send_tcp_ack(int sockfd,struct sockaddr_in *addr)
{
struct send_tcp
{
struct iphdr ip;
struct tcphdr tcp;
} send_tcp;

struct pseudo_header
{
unsigned int source_address;
unsigned int dest_address;
unsigned char placeholder;
unsigned char protocol;
unsigned short tcp_length;
struct tcphdr tcp;
} pseudo_header;

int tcp_socket;
struct sockaddr_in sin;
int sinlen;

// form ip packet
send_tcp.ip.ihl = 5;
send_tcp.ip.version = 4;
send_tcp.ip.tos = 0;
send_tcp.ip.tot_len = htons(40);
send_tcp.ip.frag_off = 0;
send_tcp.ip.ttl = 64;
send_tcp.ip.protocol = IPPROTO_TCP;
send_tcp.ip.check = 0;
send_tcp.ip.saddr = iprecv->ip_dst.s_addr;
send_tcp.ip.daddr = addr->sin_addr.s_addr;

// form tcp packet
send_tcp.tcp.dest = addr->sin_port;
send_tcp.tcp.source = tcprecv->dest;
send_tcp.tcp.ack_seq = htonl(ntohl(tcprecv->seq)+0x01);
send_tcp.tcp.res1 = 0;
send_tcp.tcp.doff = 5;
send_tcp.tcp.fin = 0;
send_tcp.tcp.syn = 1;
send_tcp.tcp.rst = 0;
send_tcp.tcp.psh = 0;
send_tcp.tcp.ack = 1;
send_tcp.tcp.urg = 0;
send_tcp.tcp.res2 = 0;
send_tcp.tcp.window = htons(512);
send_tcp.tcp.check = 0;
send_tcp.tcp.urg_ptr = 0;
send_tcp.tcp.seq = tcprecv->seq;

// set fields that need to be changed
//send_tcp.tcp.source++;
send_tcp.ip.id = 0 ;
//send_tcp.tcp.seq++;
send_tcp.tcp.check = 0;
send_tcp.ip.check = 0;

// calculate the ip checksum
send_tcp.ip.check = in_cksum((unsigned short *)&send_tcp.ip, 20);

// set the pseudo header fields
pseudo_header.source_address = send_tcp.ip.saddr;
pseudo_header.dest_address = send_tcp.ip.daddr;
pseudo_header.placeholder = 0;
pseudo_header.protocol = IPPROTO_TCP;
pseudo_header.tcp_length = htons(20);
b((char *)&send_tcp.tcp, (char *)&pseudo_header.tcp, 20);
send_tcp.tcp.check = in_cksum((unsigned short *)&pseudo_header, 32);
sinlen = sizeof(sin);
int count;
for(count=0;count<2;count++){
if(sendto(sockfd, &send_tcp, 40, 0, (struct sockaddr *)addr,sizeof(struct sockaddr))<0)
{
printf("sendto error!/n");
}
else
{
printf("send packet ok!/n");
}

}
*/

/* 下面是首部校驗和的演算法 */
unsigned short in_cksum(unsigned short *addr, int len) /* function is from ping.c */
{
register int nleft = len;
register u_short *w = addr;
register int sum = 0;
u_short answer =0;

while (nleft > 1)
{
sum += *w++;
nleft -= 2;
}
if (nleft == 1)
{
*(u_char *)(&answer) = *(u_char *)w;
sum += answer;
}
sum = (sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
answer = ~sum;
return(answer);
}
int Open_Packet_Socket()
{
int sock;
sock=socket(AF_INET,SOCK_PACKET,htons(ETH_P_ALL));
if (sock==-1)
{
perror("socket");
exit(errno);
}
printf("sockfd:%d/n",sock);
return(sock);
}
int Open_Raw_Socket()
{
int sock;
sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
if (sock==-1)
{
perror("socket");
exit(errno);
}
printf("sendfd:%d/n",sock);
return(sock);
}

int Set_Promisc(char *interface, int sockfd )
{
struct ifreq ifr;
strncpy(ifr.ifr_name,interface,strnlen(interface)+1);
if (ioctl(sockfd,SIOCGIFFLAGS,&ifr)==-1)
{
perror("ioctl1");
exit(errno);
}
ifr.ifr_flags |= IFF_PROMISC;
if (ioctl(sockfd,SIOCSIFFLAGS,&ifr))
{
perror("ioctl2");
exit(errno);
}

// printf("Setting interface ::: %s ::: to promisc...ok..../n", interface);
return(1);
}

『捌』 (求源碼)JAVA WEB典型模塊與項目實戰大全 作者 常建功發到[email protected],謝謝!

我也想看看 順路來一份唄 真的 謝謝
[email protected]

熱點內容
三表聯查的sql語句 發布:2025-01-22 17:27:13 瀏覽:417
安卓怎麼解壓分卷壓縮 發布:2025-01-22 17:24:59 瀏覽:720
歐姆龍plc編程語言 發布:2025-01-22 17:21:48 瀏覽:395
和值編程 發布:2025-01-22 17:20:07 瀏覽:517
微信青少年模式獨立密碼是什麼 發布:2025-01-22 16:52:06 瀏覽:589
騰訊雲伺服器怎麼購買 發布:2025-01-22 16:45:01 瀏覽:630
天貓怎麼上傳視頻 發布:2025-01-22 16:40:02 瀏覽:727
安卓如何把抖音評論換成黑色 發布:2025-01-22 16:30:57 瀏覽:702
連接池Java 發布:2025-01-22 16:28:27 瀏覽:260
搶杠演算法 發布:2025-01-22 16:15:02 瀏覽:74