当前位置:首页 » 操作系统 » 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]

热点内容
tampermonkey脚本 发布:2025-01-22 18:53:17 浏览:116
windows7共享文件夹 发布:2025-01-22 18:53:17 浏览:478
如何调节安卓手机的内存 发布:2025-01-22 18:49:30 浏览:638
佳能相机存储卡怎么取消 发布:2025-01-22 18:40:59 浏览:568
天猫宝贝上传 发布:2025-01-22 18:35:09 浏览:544
ipad如何登录金铲铲安卓账号 发布:2025-01-22 18:32:09 浏览:319
加密沟通 发布:2025-01-22 18:31:22 浏览:555
win7ftp用户名和密码设置 发布:2025-01-22 17:46:48 浏览:221
三表联查的sql语句 发布:2025-01-22 17:27:13 浏览:418
安卓怎么解压分卷压缩 发布:2025-01-22 17:24:59 浏览:721