C源码
分享116个C源码,总有一款适合您
下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。
源码下载链接:https://pan.baidu.com/s/10SZ59VHa8szGtMolQwUMFA?pwd=vooj
提取码:vooj
采集代码下载链接:采集代码.zip - 蓝奏云
import os import shutil import time from time import sleep import requests from bs4 import BeautifulSoup from docx import Document from docx.shared import Inches from framework.base.BaseFrame import BaseFrame from sprider.business.DownLoad import DownLoad from sprider.business.SeleniumTools import SeleniumTools from sprider.business.SpriderTools import SpriderTools from selenium import webdriver from selenium.webdriver.common.by import By from sprider.model.SpriderEntity import SpriderEntity from sprider.access.SpriderAccess import SpriderAccess class HuaJunCode: base_url = "https://down.chinaz.com" # 采集的网址 save_path = "D:\\Freedom\\Sprider\\ChinaZ\\" sprider_count = 116 # 采集数量 sprider_start_count=210# 正在采集第51页的第7个资源,共60页资源 debug word_content_list = [] folder_name = "" page_end_number=0 max_pager=15 #每页的数量 haved_sprider_count =0 # 已经采集的数量 page_count = 1 # 每个栏目开始业务content="text/html; charset=gb2312" filter_down_file=[] def __init__(self): pass def sprider(self,title_name="NET"): """ 采集 PHP https://down.chinaz.com/class/572_5_1.htm NET https://down.chinaz.com/class/572_4_1.htm ASP https://down.chinaz.com/class/572_3_1.htm Python https://down.chinaz.com/class/604_572_1.htm https://down.chinaz.com/class/608_572_1.htm 微信 https://down.chinaz.com/class/610_572_1.htm Ruby https://down.chinaz.com/class/622_572_1.htm NodeJs https://down.chinaz.com/class/626_572_1.htm C https://down.chinaz.com/class/594_572_1.htm :return: """ if title_name == "PHP": self.folder_name = "PHP源码" self.second_column_name = "572_5" elif title_name == "Go": self.folder_name = "Go源码" self.second_column_name = "606_572" elif title_name == "NET": self.folder_name = "NET源码" self.second_column_name = "572_4" elif title_name == "ASP": self.folder_name = "ASP源码" self.second_column_name = "572_3" elif title_name == "Python": self.folder_name = "Python源码" self.second_column_name = "604_572" elif title_name == "JavaScript": self.folder_name = "JavaScript源码" self.second_column_name = "602_572" elif title_name == "Java": self.folder_name = "Java源码" self.second_column_name = "572_517" elif title_name == "HTML": self.folder_name = "HTML-CSS源码" self.second_column_name = "608_572" elif title_name == "TypeScript": self.folder_name = "TypeScript源码" self.second_column_name = "772_572" elif title_name == "微信小程序": self.folder_name = "微信小程序源码" self.second_column_name = "610_572" elif title_name == "Ruby": self.folder_name = "Ruby源码" self.second_column_name = "622_572" elif title_name == "NodeJs": self.folder_name = "NodeJs源码" self.second_column_name = "626_572" elif title_name == "C++": self.folder_name = "C++源码" self.second_column_name = "596_572" elif title_name == "C": self.folder_name = "C源码" self.second_column_name = "594_572" #https://down.chinaz.com/class/594_572_1.htm first_column_name = title_name # 一级目录 second_folder_name = str(self.sprider_count) + "个" + self.folder_name #二级目录 self.sprider_type =second_folder_name self.merchant=int(self.sprider_start_count) //int(self.max_pager)+1 #起始页码用于效率采集 self.file_path = self.save_path + os.sep + "Code" + os.sep + first_column_name + os.sep + second_folder_name self.save_path = self.save_path+ os.sep + "Code" + os.sep+first_column_name+os.sep + second_folder_name+ os.sep + self.folder_name BaseFrame().debug("开始采集ChinaZCode"+self.folder_name+"...") sprider_url = (self.base_url + "/class/{0}_1.htm".format(self.second_column_name)) down_path="D:\\Freedom\\Sprider\\ChinaZ\\Code\\"+first_column_name+"\\"+second_folder_name+"\\Temp\\" if os.path.exists(down_path) is True: shutil.rmtree(down_path) if os.path.exists(down_path) is False: os.makedirs(down_path) if os.path.exists(self.save_path ) is True: shutil.rmtree(self.save_path ) if os.path.exists(self.save_path ) is False: os.makedirs(self.save_path ) chrome_options = webdriver.ChromeOptions() diy_prefs ={'profile.default_content_settings.popups': 0, 'download.default_directory':'{0}'.format(down_path)} # 添加路径到selenium配置中 chrome_options.add_experimental_option('prefs', diy_prefs) chrome_options.add_argument('--headless') #隐藏浏览器 # 实例化chrome浏览器时,关联忽略证书错误 driver = webdriver.Chrome(options=chrome_options) driver.set_window_size(1280, 800) # 分辨率 1280*800 # driver.get方法将定位在给定的URL的网页,get接受url可以是任何网址,此处以百度为例 driver.get(sprider_url) # content = driver.page_source # print(content) div_elem = driver.find_element(By.CLASS_NAME, "main") # 列表页面 核心内容 element_list = div_elem.find_elements(By.CLASS_NAME, 'item') laster_pager_ul = driver.find_element(By.CLASS_NAME, "el-pager") laster_pager_li =laster_pager_ul.find_elements(By.CLASS_NAME, 'number') laster_pager_url = laster_pager_li[len(laster_pager_li) - 1] page_end_number = int(laster_pager_url.text) self.page_count=self.merchant while self.page_count <= int(page_end_number): # 翻完停止 try: if self.page_count == 1: self.sprider_detail(driver,element_list,self.page_count,page_end_number,down_path) pass else: if self.haved_sprider_count == self.sprider_count: BaseFrame().debug("采集到达数量采集停止...") BaseFrame().debug("开始写文章...") self.builder_word(self.folder_name, self.save_path, self.word_content_list) BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!") break #(self.base_url + "/sort/{0}/{1}/".format(url_index, self.page_count)) #http://soft.onlinedown.net/sort/177/2/ next_url = self.base_url + "/class/{0}_{1}.htm".format(self.second_column_name, self.page_count) driver.get(next_url) div_elem = driver.find_element(By.CLASS_NAME, "main") # 列表页面 核心内容 element_list = div_elem.find_elements(By.CLASS_NAME, 'item') self.sprider_detail( driver, element_list, self.page_count, page_end_number, down_path) pass #print(self.page_count) self.page_count = self.page_count + 1 # 页码增加1 except Exception as e: print("sprider()执行过程出现错误:" + str(e)) sleep(1) def sprider_detail(self, driver,element_list,page_count,max_page,down_path): """ 采集明细页面 :param driver: :param element_list: :param page_count: :param max_page: :param down_path: :return: """ index = 0 element_array=[] element_length=len(element_list) for element in element_list: url_A_obj = element.find_element(By.CLASS_NAME, 'name-text') next_url = url_A_obj.get_attribute("href") coder_title = url_A_obj.get_attribute("title") e=coder_title+"$"+ next_url element_array.append(e) pass if int(self.page_count) == int(self.merchant): self.sprider_start_index = int(self.sprider_start_count) % int(self.max_pager) index=self.sprider_start_index while index < element_length: if os.path.exists(down_path) is False: os.makedirs(down_path) if self.haved_sprider_count == self.sprider_count: BaseFrame().debug("采集到达数量采集停止...") break #element = element_list[index] element=element_array[index] time.sleep(1) index = index + 1 sprider_info="正在采集第"+str(page_count)+"页的第"+str(index)+"个资源,共"+str(max_page)+"页资源" BaseFrame().debug(sprider_info) next_url=element.split("$")[1] coder_title=element.split("$")[0] # next_url = element.find_element(By.TAG_NAME, 'a').get_attribute("href") # coder_title =element.find_element(By.TAG_NAME, 'img').get_attribute("title") driver.get(next_url) # 请求明细页面 try: # codeEntity = SpriderEntity() # 下载过的资源不再下载 # codeEntity.sprider_base_url = self.base_url # codeEntity.create_datetime = SpriderTools.get_current_datetime() # codeEntity.sprider_url = next_url # codeEntity.sprider_pic_title = coder_title # codeEntity.sprider_pic_index = str(index) # codeEntity.sprider_pager_index = page_count # codeEntity.sprider_type = self.sprider_type # if SpriderAccess().query_sprider_entity_by_urlandindex(next_url, str(index)) is None: # SpriderAccess().save_sprider(codeEntity) # else: # BaseFrame().debug(coder_title+next_url + "数据采集过因此跳过") # continue if SeleniumTools.judeg_element_isexist(driver, "CLASS_NAME", "download-item") == 3: driver.back() BaseFrame().debug(coder_title+"不存在源码是soft因此跳过哦....") continue print("准备点击下载按钮...") driver.find_element(By.CLASS_NAME, "download-item").click() #下载源码 sleep(1) result,message=SpriderTools.judge_file_exist(True,240,1,down_path,"zip|rar|gz|tgz")#判断源码 if result is True: sprider_content = [coder_title, self.save_path + os.sep +"image"+ os.sep + coder_title + ".jpg"] # 采集成功的记录 self.word_content_list.append(sprider_content) # 增加到最终的数组 self.haved_sprider_count = self.haved_sprider_count + 1 BaseFrame().debug("已经采集完成第" + str(self.haved_sprider_count) + "个") time.sleep(1) driver.back() coder_title = str(coder_title).replace("/", "") #去掉windows不识别的字符 files = os.listdir(down_path) file_name = files[0] #获取默认值 if len(self.filter_down_file)>0: for file in files: for filter_file in self.filter_down_file: if str(file) in str(filter_file): BaseFrame().error(filter_file + "文件被过滤...") pass else: file_name = file srcFile = down_path + os.sep + file_name file_ext = os.path.splitext(srcFile)[-1] dstFile = down_path + os.sep + coder_title + file_ext os.rename(srcFile, dstFile) srcFile = dstFile dstFile = self.save_path + os.sep + coder_title + file_ext shutil.move(srcFile, dstFile) # 移动文件 else: files = os.listdir(down_path) # 读取目录下所有文件 coder_title = str(coder_title).replace("/", "") # 去掉windows不识别的字符 try: if str(message)=="0个文件认定是False": BaseFrame().error(coder_title+"文件不存在...") shutil.rmtree(down_path) # 如果没下载完是无法删除的 pass else: BaseFrame().error("检测下载文件出错可能原因是等待时间不够已经超时,再等待60秒...") time.sleep(60) shutil.rmtree(down_path) #如果没下载完是无法删除的 #清空数组 self.filter_down_file.clear() except Exception as e: # 使用数组append记录文件名字 移动的时候过滤 self.builder_filter_file(files) pass except Exception as e: BaseFrame().error("sprider_detail()执行过程出现错误:" + str(e)) BaseFrame().error("sprider_detail()记录下载的文件名") # 使用数组append记录文件名字 移动的时候过滤 files = os.listdir(down_path) # 读取目录下所有文件 self.builder_filter_file(files) if(int(page_count)==int(max_page)): self.builder_word(self.folder_name,self.save_path,self.word_content_list) BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
ADCenter 2000 v3.1豪华版
Banner随机显示 v2.7(View ads)
色彩广告显视系统 v1.0
EveryAuction v1.5
花斑猪二手市场 v2.0 繁体中文版
紫禁城新闻小偷修改版
一山会员管理
好站推荐程序 v1.0
网酷图形流量统计 v1.0 Beta 0825
CGI小探针 (env.pl)
九天订单系统 v1.0 单用户共享版
雷傲LB5000MX v0.99
九天域名系统 v1.03
多用户虚拟域名系统
ZiJinCheng.NET 域名转向
情书生成投递系统 v0.9a v0.9a
网站搜索引擎大全程序 v2.0
天气预报改良版 v1.0
GGLXP-LBXP v0805 改进版
ljj文章管理系统LjjWZ v 1.00(标准版)
雷傲LB5000论坛插件(39个)
网站排行榜新版
域名购买器商务版
CloudCity Stat 云间城堡站点统计
飞云多用户虚拟域名Mysql简化版
edo聊天室多用户版本简版
Top Sites Professional v3.05 汉化版
Top Sites Professional v3.05
晓冉文章管理系统 v3.0.2 特别版
晓冉文章管理系统 v3.0.3 免费版
兰色零度交友系统
一个很小的天气预报小偷 v1.0
旅行WDB论坛 to LB5000帖子数据转换器
韩国涂鸦版
ebs v2.02 修改版
ljj在线新闻系统Ljjnews(专业新闻操手) v1.77
UBB.classicTM v6.3.0.1 中文增强版
兰色零度仿书生下载无错版
WK 留言板 v1.0 多用户版
申请免费空间生成系统
站点排行榜topsites v2.01 中文版
100无极链 中文汉化版
飞云飘渺虚拟域名程序
DASI版下载管理 v1.0
UltraThreads v5.07
cgi交友联盟
九天轮番广告
游戏统计程序(hlstats) v1.02 中文版
花斑猪二手市场 v2.0
乘风在线图片管理系统 v0.99 beta
花斑猪交友列表 v2.0 多用户版
商贸广场 v1.5
AGBII v1.3 多用户版
bbs3000 会员版
Imagefolio v2.27 国际版
SODBBS v4.17 稳定版
EDdown软件下载系统 v4.5 商业版
科欣网站管理系统(SiteManager) v2.50
五帝文章管理系统 v1.7 正式版
BBS3000 tackynote日记本多用户版
西路留言本 v3.0
西路邮件列表 v1.0
网龙购物系统 v2.0 修正版
SODBBS v3.56
wwwthreads v3.5.1
NICE UBB v3.0 完全汉化修改版
Billow BBS v3.0
YY-BOARD v2.81
ImageFolio v2.1 完全中文版
每日更新+邮件列表合二为一
cgi邮件列表
import os # 查找指定文件夹下所有相同名称的文件 def search_file(dirPath, fileName): dirs = os.listdir(dirPath) # 查找该层文件夹下所有的文件及文件夹,返回列表 for currentFile in dirs: # 遍历列表 absPath = dirPath + '/' + currentFile if os.path.isdir(absPath): # 如果是目录则递归,继续查找该目录下的文件 search_file(absPath, fileName) elif currentFile == fileName: print(absPath) # 文件存在,则打印该文件的绝对路径 os.remove(absPath)
一山交友CGI加强版 v2.0
花斑猪交友列表 v1.2 修正版
Yuzi交友列表2000 v1.21(多用户版)
永恒系列交友列表 v2.1
易得交友中心多用户版
cgi邮件收发程序汉化版
草堂在线邮件
SDPMailingList v1.2
Command-O Postcard v1.3 汉化版
Postcard v4.2
Cougalist v5.1
Power List v1.5
中文邮件通知 v3.0
SMTP发送邮件
Yuzi聊天室2000 v1.06(多用户版)
Yuzi留言簿2000 v2.26(特别版)
ealis留言板
臥龍小三留言板201w新版
夜猫网留言本
易得留言板stj修改版
诺迅留言簿VD Book v1.0
最后送大家一首诗:
山高路远坑深,
大军纵横驰奔,
谁敢横刀立马?
惟有点赞加关注大军。