分享116个PHP源码PHP源码,总有一款适合你

简介: 分享116个PHP源码PHP源码,总有一款适合你

文件下载地址:分享116个PHP源码PHP源码,总有一款适合你

无忧淘宝客系统(集成jssdk)

亿百天教室预约系统 EbaitianCRS20130308

24小时返利系统

整形美容医院信息管理系统

尘烟五笔字根编码查询系统

易学短网址系统

Cowtacular 库存管理系统

一流购物分享系统带数据(淘金点版)

汉潮B2B2C多用户商城系统

大湿手机直播系统

飞蛙B2C微分销商城系统 FeiWa WeiShop

kldns 快乐二级域名分发系统 2.1.1

PrestaShop 网上购物系统

贴心猫(IntimateCat) 通用网站系统 V3.9

LOGA 日志系统升级程序

文具企业网站系统

YAWIK 工作和求职管理系统

展览服务公司网站系统

RackTables 数据中心资产管理系统

标识公司网站系统

广告设计公司网站系统

盾灵批量友情链接管理系统

电动车制造企业网站系统

门窗工程部网站系统

商务宾馆酒店网站系统

食品购物商场网站系统

Co.MZ 企业系统

预订易地方酒店预订网站管理系统

ECTouch移动商城系统

微信集分享系统

微信网上订餐系统多用户版

DzzOffice网盘协作系统

TinyShop电子商务系统支付插件

群建站通用企业网站建设系统免费版

MYMPS蚂蚁分类信息系统

淘宝内部优惠券广告展示系统

阿旺wifi智能系统Free

优客365网站分类导航系统

PhotoFun-图趣超轻图片网站系统

HDWiki(互动百科)

响应式淘宝客系统

树洞外链

信呼协同办公系统

DM企业建站系统

飞蛙B2C微分销商城系统

恒友网络威客+商城系统(WK+shop)

贝云校园网站管理系统

silverstripe 内容管理系统

云EC电商系统

Carbon Forum 论坛系统

墨子博客系统

CoverPrise品牌官网系统(原NiuKou建站系统)

墨子题库系统

ShopBuilder网店系统

silverstripe Web内容管理系统

Jaws框架和内容管理系统

PHlyMail 邮件系统

xSite企业自助建站系统(本地安装版)

淘宝自动发货提货系统

ezContents 网站内容管理系统

盾灵新闻发布系统

WebsiteBaker 内容管理系统

pDownload 下载界面

glFusion内容管理系统

Zeroboard 建站系统

口福科技网上订餐系统

AK博客网站 个人博客网站系统

大上海淘宝购物系统

扎鸟搜索引擎蜘蛛爬行统计系统

WBlog博客管理系统

Kuwebs企业网站管理系统

Alog Ben 博客日志系统 UTF8

体育用品商城系统

ITool网站综合查询系统

TinyBlog 个人博客系统

网上在线挂号预约管理系统

67企业网站管理系统

安乐业房产系统

ET_deliver发货单查询系统

易得网站数据采集系统

阿西多用户日志系统

Mihalism多用户图片共享系统

ITool快递查询系统免费版

化工产品仓储管理系统

齐博视频系统

优拓免费wap建站系统 V1.5

齐博考试系统

3839小游戏

b2b系统Destoonb2b

网客库存管理系统|在线excel编辑|在线office

手机网址站系统WML版

爱淘宝淘宝客推广系统

ETsale简单产品销售管理系统

256啦网址导航系统完整114啦

claroline 在线学习和课程管理系统 多国语言含中文

康盛品牌空间网上展示系统

康盛品牌空间网上展示系统

Kuwebs 酷纬企业网站管理系统

moa image gallery 轻量级易于使用的个人画廊系统

MygosuClan  游戏内容管理系统 1.04

jCore 网站内容管理系统 0.9

Tine Web的群件系统 2.0 RC2

Demila数字内容交易系统

随风知道采集系统(联盟计划)

星光贴吧系统(原香菇贴吧系统)

友博CRM客户关系管理系统

发货统计微型ERP系统

嘉缘人才网站系统

暗月挂Q系统

公司内部销售管理系统

厦门公交查询系统

客客出品专业威客系统KPPW

领域医院网络信息管理系统

MySQL5.5 中文版

飞舞小说系统

莽荒纪积分签到系统

才子信息学生综合管理系统


 

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:
    page_count = 1  # 每个栏目开始业务content="text/html; charset=gb2312"
    base_url = "http://soft.onlinedown.net/"  # 采集的网址
    save_path = "D:\\Sprider\\HuaJunCode\\"
    sprider_count = 118  # 采集数量
    sprider_start_count=140 # 从第几个序号开始 直接改数量即可 会做除法操作 正在采集第33页的第23个资源 debug
    max_pager=25 #每页的数量
    haved_sprider_count =0  # 已经采集的数量
    word_content_list = []
    folder_name = ""
    page_end_number=0
    def __init__(self):
        pass
    def sprider(self,url_index=177):
        """
        采集 http://soft.onlinedown.net/sort/177/
        :return:
        """
        if url_index==177:
            self.folder_name="PHP源码"
        elif url_index==178:
            self.folder_name = "博客系统"
        elif url_index == 179:
            self.folder_name = "整站系统"
        elif url_index == 180:
            self.folder_name = "商务商城"
        elif url_index == 176:
            self.folder_name = "ASP源码"
        merchant=int(self.sprider_start_count) //int(self.max_pager)+1
        self.save_path = self.save_path + os.sep + self.folder_name
        BaseFrame().debug("开始采集HuaJunCodePHP...")
        sprider_url=(self.base_url + "/sort/{0}/1/".format(url_index))
        down_path="D:\\Sprider\\HuaJunCode\\"+self.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)
        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)
        pager_content=driver.find_element(By.CLASS_NAME, "page").find_element(By.TAG_NAME, 'span').text
        page_end_number = pager_content.replace("共", "").replace("页", "")
        #print(page_end_number)
        ul_elem =driver.find_element(By.ID, "soft_list") #列表页面 核心内容
        li_list=ul_elem.find_elements(By.TAG_NAME, 'li')
        self.page_count=merchant
        while self.page_count <= int(page_end_number):  # 翻完停止
            try:
                if self.page_count == 1:
                    self.sprider_detail(driver,li_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 + "/sort/{0}/{1}/".format(url_index, self.page_count))
                    driver.get(next_url)
                    ul_elem = driver.find_element(By.ID, "soft_list")  # 列表页面 核心内容
                    li_list = ul_elem.find_elements(By.TAG_NAME, 'li')
                    self.sprider_detail( driver, li_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(1000000)
                #driver.quit()
    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:
            next_url = element.find_element(By.TAG_NAME, 'a').get_attribute("href")
            coder_title = element.find_element(By.TAG_NAME, 'img').get_attribute("title")
            e=coder_title+"$"+ next_url
            element_array.append(e)
            pass
        #print(element_array)
        # print(element_list[index].find_element(By.TAG_NAME, 'a').get_attribute("href"))
        #self.save_path = self.save_path + os.sep + self.folder_name
        # page_count * element_length
        #self.haved_sprider_count=self.sprider_start_count
        # sprider_start_count
        self.sprider_start_index = int(self.sprider_start_count) % int(self.max_pager)
        index=self.sprider_start_index
        while index < element_length:
            # ul_elem = driver.find_element(By.ID, "soft_list")  # 列表页面 核心内容
            # element_list = ul_elem.find_elements(By.TAG_NAME, 'li')
            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)+"个资源"
            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 = "code"
                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", "bendown") == 3:
                    driver.back()
                    BaseFrame().debug(coder_title+"不存在源码是soft因此跳过哦....")
                    continue
                print("准备点击下载按钮...")
                driver.find_element(By.CLASS_NAME, "bendown").click()
                result,message=SpriderTools.judge_file_exist(True,90,1,down_path,"zip|rar")
                if result is True:
                    img_element =""
                    if SeleniumTools.judeg_element_isexist(driver,"TAG_NAME","center")==3:
                        if SeleniumTools.judeg_element_isexist(driver, "CLASS_NAME", "sortPic") == 3:
                            pass
                        else:
                            img_element = driver.find_element(By.CLASS_NAME, "sortPic")
                            img_element=img_element.find_element(By.TAG_NAME, "img")
                            image_src = img_element.get_attribute("src")
                            DownLoad(self.save_path).down_cover_image__(image_src, coder_title)  # 资源的 封面
                    else:
                        img_element = driver.find_element(By.TAG_NAME, "center").find_element(By.TAG_NAME, "img")
                        image_src = img_element.get_attribute("src")
                        DownLoad(self.save_path).down_cover_image__(image_src, coder_title)  # 资源的 封面
                    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()
                    # 处理RAR文件
                    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)
                    # if "rar" in file_ext:
                    #     import rarfile
                    #     temp = rarfile.RarFile(dstFile)  # 待解压文件
                    #     temp.extractall(down_path)  # 解压指定文件路径
                    # elif "zip" in file_ext:
                    #     pass
                    srcFile=dstFile
                    dstFile=self.save_path+os.sep+coder_title+file_ext
                    shutil.move(srcFile, dstFile)  # 移动文件
                else:
                    BaseFrame().error("检测下载文件出错可能原因是等待时间不够已经超时,再等待60秒...")
                    time.sleep(60)
                    shutil.rmtree(down_path)
                    pass
            except Exception as e:
                time.sleep(60)
                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文件和下载文件!")
    def builder_word(self, word_title, save_path, list_files):
        """
        输出产物是word文件
        :param word_title: 文件的标题
        :param save_path: 文件的保存路径
        :param list_files: 文件集合(单个内容)
        :return:
        """
        try:
            self.copy_file(self.save_path)
            print("Create Word"+word_title)
            file_count= len(list_files)
            self.gen_passandtxt(file_count,word_title)
            document = Document()
            document.add_heading("PHP"+word_title+"源码", level=2)
            document.add_paragraph("分享"+str(file_count)+"个"+word_title+"PHP源码,总有一款适合你\r\n"
                                   "下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。")
            ppt_tieles = ""
            for files in list_files:
                ppt_tieles = ppt_tieles + str(files[0]) + "\r"
            document.add_paragraph(ppt_tieles)
            for files in list_files:
                try:
                    document.add_paragraph(files[0])
                    document.add_picture(files[1], width=Inches(3))
                except Exception as e:
                    pass
            document.add_paragraph("最后送大家一首诗:")
            paragraph = document.add_paragraph()  # 单独控制
            paragraph.add_run("山高路远坑深,\r")
            paragraph.add_run("大军纵横驰奔,\r")
            paragraph.add_run("谁敢横刀立马?\r")
            paragraph.add_run("惟有点赞加关注大军。\r")
            paragraph.bold = True  # 字体加粗
            file_full_path=save_path+os.sep+word_title+".docx"
            document.save(file_full_path)
        except Exception as e:
            print("Create Word Fail reason:" + str(e))
    def copy_file(self,target_path):
        print("copy files")
        import os
        import shutil
        src_apk_file_path="薅羊毛专业版.apk"
        dst_apk_file_path=target_path+os.sep+"薅羊毛专业版.apk"
        shutil.copyfile(src_apk_file_path, dst_apk_file_path)  # 移动文件
        src_pdf_file_path = "薅羊毛专业版.pdf"
        dst_pdf_file_path = target_path + os.sep + "薅羊毛专业版.pdf"
        shutil.copyfile(src_pdf_file_path, dst_pdf_file_path)  # 移动文件
        src_doc_file_path = "readme.docx"
        dst_doc_file_path = target_path + os.sep + "readme.docx"
        shutil.copyfile(src_doc_file_path, dst_doc_file_path)  # 移动文件
        pass
    def gen_passandtxt(self,file_count,word_title):
        print("Create PassWord and Pass.txt")
        message=SpriderTools.gen_password()
        password = "".join(message)
        content=""
        content = content + "\n分享"+str(file_count)+"个"+word_title+"PHP源码"
        content = content + "\n\r"
        content=content+"\n都到这里了您就支持一下呗!谢谢老铁~~"
        content=content+"\n\r"
        content=content+"\n文件我就不一一列举了,送老铁一首打油诗"
        content=content+"\n学习知识费力气,"
        content=content+"\n收集整理更不易。"
        content=content+"\n知识付费甚欢喜,"
        content=content+"\n为咱码农谋福利。"
        content=content+"\n\r"
        content=content+"\n\r"
        content=content+"\n感谢您的支持"
        content=content+"\n\r" 
        content=content+"\n-------------------------------------------华丽分割线-------------------------------------------------------"
        content=content+"\n友情提醒解压密码:"+password+""
        full_path=self.save_path+os.sep+""+str(file_count)+"sell_pass.txt"
        with open(full_path, 'a', encoding='utf-8') as f:
            f.write(content)
if __name__ == "__main__":
    HuaJunCode().sprider(177)
    pass
目录
相关文章
|
15天前
|
前端开发 安全 Java
响应式企业网站源码JavaL/PHP带后台管理​:Bootstrap HTML5模板
本指南深度解析基于Java/PHP双引擎与Bootstrap HTML5的响应式企业官网开发全流程,涵盖架构设计、后台管理、数据库规范、安全加固及云原生部署,助力企业实现品牌展示、业务转化与运营闭环,推动数字化转型。
|
15天前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
17天前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
3月前
|
小程序 安全 关系型数据库
专业打造一款圈子源码软件系统 / 后端 PHP 搭建部署一样实现利益化
本教程详解基于PHP后端与Uni-app的小程序开发全流程,涵盖技术选型、环境搭建、源码导入、接口对接及功能实现。采用Laravel/Symfony框架,结合MySQL/PostgreSQL数据库,使用WebSocket实现实时通信,并集成IM SDK实现音视频聊天。前端使用Uni-app开发,支持跨平台运行。教程包含完整部署流程与安全优化方案,助力快速搭建高性能、安全稳定的小程序系统。
185 5
|
3月前
|
存储 缓存 安全
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
118 2
|
3月前
|
运维 安全 数据可视化
采用PHP+Vue技术架构的不良事件管理系统(源码)
本系统为医院安全(不良)事件管理工具,支持快速上报、流程化处理与多维度分析,助力识别风险、优化管理。采用PHP+Vue技术架构,功能涵盖事件上报、追踪整改、数据统计及PDCA改进等。
124 0
|
6月前
|
PHP
基于PHP开发的资源库系统源码
基于PHP开发的资源库系统源码
117 13
|
7月前
|
前端开发 算法 NoSQL
前端uin后端php社交软件源码,快速构建属于你的交友平台
这是一款功能全面的社交软件解决方案,覆盖多种场景需求。支持即时通讯(一对一聊天、群聊、文件传输、语音/视频通话)、内容动态(发布、点赞、评论)以及红包模块(接入支付宝、微信等第三方支付)。系统采用前后端分离架构,前端基于 UniApp,后端使用 PHP 框架(如 Laravel/Symfony),配合 MySQL/Redis 和自建 Socket 服务实现高效实时通信。提供用户认证(JWT 集成)、智能匹配算法等功能,助力快速上线,显著节约开发成本。
160 0
前端uin后端php社交软件源码,快速构建属于你的交友平台
|
6月前
|
安全 搜索推荐 PHP
一款轻量级的PHP链接发布页面源码
一款轻量级的PHP链接发布页面源码
113 6