delphi做的idhttp下载具体某个网站资源的程序(希望大家多看看,多给小弟指点指点,有利于小弟学习)...

news/2024/5/15 10:48:38/文章来源:https://blog.csdn.net/weixin_34150830/article/details/85441728

今天由于需要下载具体某个网站的资源,手动下载很累,所以我就想写个下载的程序来让程序下载

由于初学Delphi,不怕大家笑话,有很多地方都不会或者都写不好,

可以说是写的很垃圾(限于知识面有限,各方面都考虑不到),

所以我把代码发上来,希望各位大侠帮忙给指出程序不足之处,

希望大家多多评论评论,以便有利于小弟学习。

 

 

代码如下:

 

ContractedBlock.gifExpandedBlockStart.gif代码
1 procedure TForm5.Button1Click(Sender: TObject);
2  var
3 reg,reg1,reg2,reg3,reg4,reg5:TPerlRegEx;
4 mystream1,mystream2:TMemoryStream;
5 regstr,reg5str,reg4str,thesql:string;
6 a,s:Arrayofstring;
7  begin
8 reg1:=TPerlRegEx.Create(nil);
9 reg1.Subject:=IdHTTP1.get('http://www.sssccc.net/other/caizhi.shtml');
10 reg1.RegEx:= 'http://www.sssccc.net/class/[^\s]*_1.shtml';
11 while reg1.MatchAgain do //遍历每个二级类
12 begin
13 //ShowMessage(reg1.SubExpressions[0]);
14
15 reg:=TPerlRegEx.Create(nil);
16 reg.Subject:=IdHTTP1.get(reg1.SubExpressions[0]);
17 reg.RegEx:='<TITLE>(.|\n)*</TITLE>';//取标题
18 while reg.MatchAgain do
19 begin
20 regstr:=reg.SubExpressions[0];
21 regstr:=Copy(regstr,8,Pos('-',regstr)-8);//获取类别名称
22
23 reg2:=TPerlRegEx.Create(nil);
24 reg2.Subject:=IdHTTP1.get(reg1.SubExpressions[0]);
25 reg2.RegEx:= 'http://www.sssccc.net/source/[^\s]*.shtml';
26 while reg2.MatchAgain do //遍历每个具体资源
27 begin
28 mystream1:=TMemoryStream.Create;
29 mystream2:=TMemoryStream.Create;
30
31 reg5:=TPerlRegEx.Create(nil); //
32 reg5.Subject:=IdHTTP1.get(reg2.SubExpressions[0]);
33 reg5.RegEx:= '<TITLE>(.|\n)*</TITLE>';
34 while reg5.MatchAgain do
35 begin
36
37
38 reg5str:= reg5.SubExpressions[0];
39 reg5str:=Copy(reg5str,8,Pos('-',reg5str)-8); //获取资源名称
40
41 reg3:=TPerlRegEx.Create(nil);
42 reg3.Subject:=IdHTTP1.get(reg2.SubExpressions[0]);
43 reg3.RegEx:= 'http://[^\s]*.jpg';
44 while reg3.MatchAgain do // 查找图片地址
45 begin
46 if not DirectoryExists('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))) then
47 if not CreateDir('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))) then
48 raise Exception.Create('创建目录出错!');
49 if not DirectoryExists('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))) then
50 if not CreateDir('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))) then
51 raise Exception.Create('创建目录出错!');
52
53 if not FileExists('e:\材质贴图'+'\'+mymd5(Trim(regstr))+mymd5(trim(reg5str))+'\'+mymd5(trim(reg5str))+'.jpg') then
54 begin
55 try
56 IdHTTP1.Get(reg3.SubExpressions[0],mystream1);
57 finally
58 mystream1.Free;
59 ShowMessage('网络出错');
60
61 end;
62 mystream1.SaveToFile('e:\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))+'\'+mymd5(trim(reg5str))+'.jpg');
63 end;
64 end;
65
66 reg4:=TPerlRegEx.Create(nil); //获取下载地址
67 reg4.Subject:=IdHTTP1.get(reg2.SubExpressions[0]);
68 reg4.RegEx:= 'href="http://www.sssccc.net/download.asp?[^\s]*';
69 while reg4.MatchAgain do
70 begin
71 if not DirectoryExists('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))) then
72 if not CreateDir('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))) then
73 raise Exception.Create('创建目录出错!');
74 if not DirectoryExists('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))) then
75 if not CreateDir('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))) then
76 raise Exception.Create('创建目录出错!');
77
78 reg4str:=Copy(reg4.SubExpressions[0],7,Length(reg4.SubExpressions[0])-7);
79
80 if not FileExists('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))+'\'+mymd5(trim(reg5str))+'.zip') then
81 begin
82 try
83 IdHTTP1.Get(reg4str,mystream2);
84 finally
85 mystream2.Free;
86 ShowMessage('网络出错');
87
88 end;
89 mystream2.SaveToFile('e:'+'\材质贴图'+'\'+mymd5(Trim(regstr))+'\'+mymd5(trim(reg5str))+'\'+mymd5(trim(reg5str))+'.zip');
90
91 thesql:=' insert into storage2 (dir1,dir2,dir3,eng_dir2,eng_dir3,filename) ';
92 thesql:=thesql+' values (''材质贴图'','''+trim(regstr)+''','''+trim(reg5str)+''','''+mymd5(Trim(regstr))+''','''+mymd5(Trim(reg5str))+''','''+mymd5(Trim(reg5str))+''' ) ';
93 a:=excsql(thesql,g_mydbcenterName);
94 end;
95 end;
96
97 reg3.Free;
98 reg4.Free;
99
100 end;
101 reg5.Free;
102 mystream1.Free;
103 mystream2.Free;
104
105 end;
106
107 reg2.Free;
108 end;
109  reg.Free;
110 end;
111
112 reg1.Free;
113
114
115  end;
116  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_808024.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

资源-常用网站地址

为什么80%的码农都做不了架构师&#xff1f;>>> 免费的网页模板下载站点 模板之家&#xff08;http://www.cssmoban.com/cssthemes/&#xff09;。转载于:https://my.oschina.net/qrmc/blog/3013976

通过图片优化,我将网站大小减少了62%

图片是Web提供的最基本的一种内容类型。人们都说一张图片胜过千言万语。但如果你一不小心&#xff0c;它也可能占用你好几兆带宽。 虽说Web图像应该尽可能清晰明快&#xff0c;但文件大小必须是可管理的&#xff0c;以便保持较快的加载速度&#xff0c;并且应该将数据使用保持在…

微信公众号用户与网站用户的绑定方案

点击访问原文 您还可以加入全栈技术交流群&#xff08;QQ群号&#xff1a;254842154&#xff09; 现在很多网站都已经建立了一套完整的用户账号体系&#xff0c;基于这套体系&#xff0c;再做其他应用的用户扩展就非常方便。例如&#xff0c;有了微软的outlook账户&#xff0c…

Anonymous几天之内攻陷500多个中国网站

根据CNET的报道&#xff0c;Anonymous***激进组织已经在几天之内黑掉了超过500个中国政府/商业网站&#xff0c;并号召中国***加入他们。 The hacked Web site for the Central Business District in Chengdu, China. (Credit: Screenshot by Steven Musil/CNET)转载于:https:/…

SharePoint2013 App 开发中 自定义网站栏,内容类型,列表。

打开vs2012新建项目。 选择Sharepoint hosted模式。 一个app开发的项目就创建好了。 创建网站栏 1.右键项目》添加》新建项》Site column 创建一个网站栏 2.在element.xml中添加以下字段。 <?xml version"1.0" encoding"utf-8"?> <Elements xml…

SEO的作用是什么?为什么要学习SEO?

SEO的作用是什么&#xff1f; 让更多的用户更快的找到他想找的东西&#xff1b;可以让相关关键词排名靠前&#xff0c;满足用户需求&#xff1b;让有需求的人首先找到你&#xff1b;提供搜索结果的自然排名&#xff0c;增加可信度&#xff1b;让你的网站排名自然靠前&#xff0…

服务器更新网站,分享自动更新网站的方法

今天来聊聊一篇关于分享自动更新网站的方法的文章,现在就为大家来简单介绍下分享自动更新网站的方法,希望对各位小伙伴们有所帮助。详细原理&#xff1a;1) Windows服务端&#xff1a;Windows服务采用.Net Framework2.0框架&#xff0c;所以使用时应该先安装好.Net Framework2.…

wdcp后台创建网站后,总是显示403界面

后台创建站点后后&#xff0c;域名已解析&#xff0c;但无法打开默认页面&#xff0c;创建网站后会有一个默认的index.html 存在于public_html下面的&#xff0c;我用FTP 查看是有的&#xff0c;但用域名却无法访问&#xff0c;总是显示403界面 经查看&#xff0c;发现端口管理…

用合作的态度来提升网站收录与排名

合作共赢&#xff0c;这个词被应用到各行各业是不无道理的&#xff0c;在SEO行业里同样如此。在多年前&#xff0c;那是SEO飞速发展的时代&#xff0c;我们见证了许许多多的SEO神话&#xff0c;各种各样一夜暴富的神人&#xff0c;但为什么近几年这样的神话越来越少?这个问题很…

python制作网页服务器_十分钟上手Python开发网站服务器

如何一键安装Python开发环境&#xff1f;如何使用Jupyter Notebook开发Flask网站服务器&#xff1f;跟我一起来上手Python编程&#xff0c;十分钟开发一个动态网站服务器程序。 Python编程 首先请安装Anaconda软件。 登录https://www.anaconda.com官网&#xff0c;下载安装Indi…

脑图学习架构设计之二:网站架构模式

转载于:https://blog.51cto.com/dba10g/1610906

IE无法打开internet网站已终止操作的解决的方法

用IE内核浏览器的朋友&#xff0c;或许不经意间会碰到这样滴问题&#xff1a;打开某个网页时&#xff0c;浏览器“嘣”跳出一个提示框“Internet Explorer无法打开Internet 站点...已终止操作”。而大多数情况下该页面甚至非常可能看起来已经载入完成&#xff0c;内容能够全然显…

iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架

iPhone App创建与审核步骤二&#xff1a;如何在developer.apple.com网站中设置App预览和截屏以完成App上架&#xff0c;根据图标规范RAD Studio 10.4 for delphi XE 或RAD Studio 10.3 for delphi 如何制作AppIcon图标 一、APP 预览和截屏 截屏规范 设备尺寸或平台 截屏尺寸 …

移动端网站设计参考规范(初稿)

找了一些这方面的资料&#xff0c;都是零零散散的&#xff0c;东西太多看起来比较累人&#xff0c;所以把一些有用的实际数据提炼了出来&#xff0c;仅供参考。 一、约定规范 团队内部使用相同版本Photoshop&#xff0c;Illustrator文件命名规范“版本号页面内容修改最新序号”…

Iphone App创建与审核步骤一:如何在developer.apple.com网站中设置你的IOS开发所需的Certificates, Identifiers Profiles

Iphone App创建与审核步骤一&#xff1a;如何在developer.apple.com网站中设置你的IOS开发所需的Certificates, Identifiers & Profiles&#xff08;证书、App ID及配置文件&#xff09; 步骤一、Apple Developer App的注册于账户管理 步骤二、在手机上打开最新版本的Appl…

【Bootstrap3.0建站笔记一】表单元素排版

1、文字和输入框前后排列&#xff1a; 代码&#xff1a; <div class"row"><div class"col-lg-12"><div class"panel panel-default"><div class"panel-heading"><h2>条件查找</h2></div>&l…

网站只有php怎么办,想获取一个网站的网站内容,但总是获取不到该怎么办

是这个网站&#xff1a;http://www.reg007.com/search。比如说&#xff0c;我在输入框里面输入了981267080qq.com他就会跳转到http://www.reg007.com/search?q981267080-at-qq.com。我想用php的file_get_contents获取http://www.reg007.com/search?q981267080-at-qq.com的网页…

配置Nginx网站https访问、http共存访问、http强制跳转到https

最近公司一客户要求服务器与客户端之间传输内容是加密的&#xff0c;通过https协议访问&#xff0c;于是使用OpenSSL生成证书&#xff0c;默认情况下ssl模块并未被安装&#xff0c;如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数&#xff0c;需要确保机器…

php 随机在文章中添加锚文本_原创文章SEO技巧——嘉定行吟科技

一、网站内容关键词的选定是根据自动分词许多SEO优化人员&#xff0c;对于网站页面内容的选择大多都是在关键词标签中出现的&#xff0c;但实际上这是一种错误的方法&#xff0c;其中一些只是优化人员的主观看法&#xff0c;没有从搜索引擎的规则上考虑&#xff0c;如果优化人员…

网站暴库原理与方法剖析

2019独角兽企业重金招聘Python工程师标准>>> 一、方式 暴库的方式有多种多样&#xff0c;我知道的就有3种以上&#xff0c;常见的暴的方法有&#xff1a;%5c类暴,conn.asp暴,ddos暴等等 二、原理 “%5c”暴库法&#xff0c;它不是网页本身的漏洞&#xff0c;而是利用…