Java源码
分享77个Java源码,总有一款适合您
下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。
源码下载链接:https://pan.baidu.com/s/1EhB4snvWia5eCztyfiX_2A?pwd=bofo
提取码:bofo
采集代码下载链接:采集代码.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 = 68 # 采集数量
sprider_start_count=525# 从第几个序号开始 直接改数量即可 会做除法操作正 正在采集第32页的第16个资源 debug
word_content_list = []
folder_name = ""
page_end_number=0
max_pager=16 #每页的数量
haved_sprider_count =0 # 已经采集的数量
page_count = 1 # 每个栏目开始业务content="text/html; charset=gb2312"
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
Pytyhon https://down.chinaz.com/class/604_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"
#
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() #下载源码
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)
srcFile = down_path + os.sep + files[0]
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:
BaseFrame().error("检测下载文件出错可能原因是等待时间不够已经超时,再等待70秒...")
time.sleep(70)
#shutil.rmtree(down_path) #如果没下载完是无法删除的
#使用数组append记录文件名字 移动的时候过滤
pass
except Exception as e:
#shutil.rmtree(down_path)
BaseFrame().error("sprider_detail()执行过程出现错误:" + str(e))
#driver.get(sprider_url)
#driver.quit()
if(int(page_count)==int(max_page)):
self.builder_word(self.folder_name,self.save_path,self.word_content_list)
BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
jspgou网店系统 v6.1.1 店中店版
OpenMeetings视频会议系统 v4.0.8
MongooseJS v5.4.17
朋也社区 v5.1.0
TinyMCE(可视化HTML编辑器) v5 RC2
Java 开源博客 Solo v2.9.8
OrientDB(基于Java的文档数据库) v3.0.13 社区版
JEESNS开源社交问答知识付费系统 v1.4.2
java建站系统 v1.2
ZTuo数字资产交易平台 v1.0
云企采电子采购平台 v2.0
Symphony社区平台 v3.4.4
JeeWx 捷微微信管家平台 v4.1
Guns后台管理系统 v5.1 经典版
HTML5模板引擎 Thymeleaf v3.0.10
双鱼林JSP商品进销存系统 v1.0
Akaxin v0.5.4
NewStarBlog博客系统 v1.0
Java EasyCms v2.0
E购-新零售系统 v1.0
Java轻量级CMS-天梯 v1.0
java开源论坛jeebbs v5.1 安装包
java开源论坛jeebbs v5.1 源码包
QQ 聊天机器人小薇 v2.2.2
团队CMS网站 v1.0
双鱼林SSM_EasyUI公司员工管理系统 v1.0
NKeditor在线富文本编辑器 v5.0.1
pageoffice for Java v4.0 免费试用版
Java后台管理系统(rongcheng-cms) v3.2.1
javaee论坛源码 v2.1
JFinal v3.2
双鱼林SSM图书管理系统 v1.0
防js/sql注入简易工具 v1.1
ProjectForge 基于Web的项目管理 v6.14.0
JSH_ERP开源进销存软件 v1.0.2
云信短信接口示例demo v1.0
云教务 v1.0
Java博客系统yijavaBlog v1.0.0
因酷开源在线网校系统 v2.0.6
WCP知识管理系统 v3.2.1
MinibarCMS小型酒吧在线管理系统 v2
fastweixin微信公众平台服务器 v1.3.14
国产java类cms v3.0.161109
MiniAppStore小程序应用市场分发平台 v1.0 正式版
在线租车服务系统 v2.0
jsp探针 v2016
凌夕网络QQ业务自助下单平台 v3.5
CKFinder 文件管理器 v2.6.2.1 for java
在线繁体字转换器 v1.0
双鱼林SSH2_EasyUI图书管理系统 v1.0
城市移动营销CMS v1.0.0
roncoo-pay(龙果)互联网支付系统 v0.0.4
淘特站内搜索引擎 v5.5
Lerx 全站CMS v3.0
云通付网站支付系统(JAVA版) v1.0
离线任务平台 v1.0
信通购物网Infocomhop v1.6 bulid0522
信通商务网Infocomb2b v1.6
belog博客程序 v1.1
javapms门户管理系统 v1.4 beta
百度编辑器UEditor JSP版 v1.4.3.2
正好p2p网贷系统 v2.0
Kunagi项目管理工具 v0.26.2
B2C网站管理系统购物网 v1.5
Web爬取工具Anthelion v1.0
短信接口 v2.1
凌夕网络QQ业务自助下单平台 v1.1.0
s2m企业级整站系统 v4.0.0
MS-MCMS内容管理系统 v4.5.2
s2mBlog 免费博客平台 v3.2.0
B3LOG Solo v1.0.0 for MySQL
凌夕卡密微商城 v1.0.1
仿阿里百秀最新模板 v0.02
网贷计算器js绿色版 v1.12
jQuery弹出层插件fDialog v1.0
冷风网聊天室 v2.0
冷风网络相册 v3.5
最后送大家一首诗:
山高路远坑深,
大军纵横驰奔,
谁敢横刀立马?
惟有点赞加关注大军。