`
buliedian
  • 浏览: 1198067 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

delphi抓取网页内容的程序

 
阅读更多

抓取网页内容,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去。其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等。

目前网页采集多为3P代码为多(3P即ASP、PHP
、JSP)。用得最有代表的就动易科技公司BBS中新闻采集系统,和网上流传的新浪新闻采集系统等都是用ASP程序来使用,但速度从理论上来说不是很好。
如果尝试用其它软件的多线程采集是不是更快?答案是肯定的。用DELPHI、VC、VB、JB都可以,PB似乎比较不好做。以下用DELPHI来解释采集
网页数据。

一、 简单的新闻采集

新闻采集是最简单的,只要识别标题、副题、作者、出处、日期、新闻主体、分页就可以了。在采集之前肯定要取得网页的内容,所以在DELPHI里加入idHTTP控件(在indyClients面板),然后用idHTTP1.GET 方法取得网页的内容,声明如下:

function Get(AURL: string): string; overload;

AURL参数,是string类型,指定一个URL地址字符串。函数返回也是string类型,返回网页的HTML源文件。比如我们可以这样调用:

tmpStr:= idHTTP1.Get(‘http://blog.csdn.net/fkedwgwy’);

调用成功后,tmpstr变量里存储的就是网易主页的代码了。

接下来,讲一下数据的截取,这里,我定义了这么一个函数:

functionTForm1.GetStr(StrSource,StrBegin,StrEnd:string):string;

var

in_star,in_end:integer;

begin

in_star:=AnsiPos(strbegin,strsource) length(strbegin);

in_end:=AnsiPos(strend,strsource);

result:=copy(strsource,in_sta,in_end-in_star);

end;

StrSource:string类型,表示HTML源文件。

StrBegin:string类型,表示截取开始的标记。

StrEnd:string,表示截取结束的标记。

函数返回字符串StrSource中从StrSource到StrBegin之间的一段文本。

比如:

strtmp:=TForm1.GetStr(‘A123BCD’,‘A’,‘BC’);

运行后,strtmp的值为:’123’。

关于函数里用到的AnsiPos和copy,都是系统定义的,可以从delphi的帮助文件里找到相关说明,我在这里也简单罗嗦一下:

function AnsiPos(const Substr, S: string): Integer

返回Substr在S中第一次出现的位置。

function copy(strsource,in_sta,in_end-in_star): string;

返回字符串strsource中,从in_sta(整型数据)开始到in_end-in_star(整型数据)结束的字符串。

有了以上函数,我们就可以通过设置各种标记,来截取想要的文章内容了。在程序中,比较麻烦的是我们需要设置许多标记,要定位某一项内容,必须设置
它的开始和结束标志。比如要取得网页上的文章标题,必须事先查看网页代码,查看出文章标题前边和后边的一些特征代码,通过这些特征代码,来截取文章的标
题。

下面我们来实际演示一下,假设要采集的文章地址为http://blog.csdn.net/fkedwgwy
代码为:

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

新建网页 1

<wbr></wbr>

<wbr></wbr>

文章标题<wbr></wbr>

ercolor="#111111" width="100%"
id="AutoNumber1">

作者

出处

这里是文章内容正文。<wbr></wbr>

上一页<wbr> 下一页</wbr>

<wbr></wbr>

<wbr></wbr>

第一步,我们用StrSource:=idHTTP1.Get(‘http://blog.csdn.net/fkedwgwy’);将网页代码保存在strsource变量中。

然后定义strTitle、strAuthor、strCopyFrom、strContent:

strTitle:= GetStr(StrSource,’’,’<wbr><wbr> ’):</wbr></wbr>

strAuthor:= GetStr(StrSource,’ [tr]’,’ [/td]’):

strCopyFrom:= GetStr(StrSource,’ ’,’ [/td][/tr]’):

strContent:= GetStr(StrSource,’,’<wbr><wbr> ’):</wbr></wbr>

这样,就能把文章的标题、副题、作者、出处、日期、内容和分页分别存储在以上变量中。

第二步,用循环的办法,打开下一页,并取得内容,加到strContent变量中。

StrSource:= idHTTP1.Get(‘new_ne.asp’);

strContent:= strContent<wbr> GetStr(StrSource,’,’<wbr><wbr> ’):</wbr></wbr></wbr>

然后再判断有没有下一页,如果还有就接着取得下一页的内容。

这样就完成了一个简单的截取过程。从以上的程序代码可以看到,我们使用的截取办法都是找截取内容的头部和尾部的,如果遇到这个头部和尾部有多个怎么办?似乎没办法,只会找到第一个,所以在找之前应该验证一下是不是只有一处有这个截取的内容的前后部。


分享到:
评论

相关推荐

    delphi抓取网页信息例子【附源码哟】

    这是由delphi xe10.1写的,里面都是中文变量,应该很容易看懂 我也是新手,在网上试着教程做,终于看懂了,于是自己简化和修改,让新的菜鸟们更容易上手理解。...内附程序演示以及源码分享,还有原始网页信息看代码

    Delphi 获取网页源代码.rar

    Delphi 获取网页源代码,这个程序首先是一个网页浏览器,可解析用户输入的网址,直接输出网页界面,然后通过操作主窗口区的Tab选项,查看该网页的源代码,也就是完成了两种功能:1、网页浏览器,2、查看源代码。...

    Delphi7.0 获取密码框中的密码.rar

    一个Delphi读取密码框中密码的小程序,可把密码框中显示为*号的内容显示在窗口上,获取密码内容,可以修改成密码查看器。以下代码与此功能相关,敬请关注:  begin  L:=GetWindowTextLength(Edit1.handle);  ...

    Delphi 获取html 表格中的数据.zip

    Delphi开发的小程序可以获取html 网页里面的表格中的内容数据 使用WebBrowser控件,解决打开网页乱码,自动转码

    Delphi多线程下载文件 获取网页内容控件.rar

    Delphi多线程下载文件 获取网页内容控件,通过HTTP的方式多线程下载,这不是一个完整的程序实例,只是一个模块的功能代码。

    [编译通过]delphi获取网页源代码

    获取网页源代码的一个程序.希望对大家有所帮助.

    输入网址查询源码的delphi程序

    写的两个软件同一个功能获取网页源代码的,采用的是不同的方式获取源码的. 软件1. 采用的是内置的webbrower控件获取的.这个控件必须需要加载完成以后才能获取源码,所以就必须二次点击获取按钮,才能获得源码.工具不算...

    Delphi网络翻译程序.rar

    Delphi网络翻译程序,通过采集网站内容实现的多语言翻译功能,程序本身不具备翻译功能,是获取文本框数据后,然后发送远程网站翻译后返回翻译结果,是一个网络采集程序内核。  注:程序写的比较早了,里面调用的...

    Delphi增强型剪贴板管理程序.rar

    Delphi增强型剪贴板管理程序,可以保存剪切板历史文本,可以快速填序列号,也可上网填表格,还能自动抓取网页文本,快速打开文件夹,快速打开网络地址,小型个人数据管理,显示桌面,支持系统托盘,自带delphi7源码。...

    基于数据采集内核的Delphi多语言翻译程序.rar

    基于数据采集内核的Delphi多语言翻译程序,支持英文、中文、荷兰语、法语、希腊语、意大利语、日本语等语种之间的相互翻译,语种内核来源于国外网站,可能现在国外网站经过了改版,获取不到语言信息了,这个大家有...

    Delphi源码版:SQL注入程序实例.rar

    Delphi源码版:SQL注入程序实例,只是写了界面及对注入做了一个更合理的流程安排。无使用三方控件,注入范围还挺广,不过不推荐本程序哦,切勿用于非法途径,后果自负。功能介绍:  1.请按照获取[SQL Server信息]...

    delphi网页邮件抓发系统

    Delphi网页邮件抓发系统是一个基于Delphi编程语言开发的应用程序,旨在实现从网页上抓取邮件发送相关信息的功能。该系统可以通过访问特定的网页,自动收集邮件发送请求,包括收件人、主题、内容等信息,并通过邮件...

    delphi 跟网站的多种交互方式

    有关delphi跟服务器端通讯的各种方式,包括post get xmlhttp,获取服务器文件,网页信息,自动提交网站信息等

    Delphi开发范例宝典目录

    实例103 获取组件名称和内容 125 第3章 图形技术 127 3.1 绘制图形 128 实例104 绘制立体模型 128 实例105 在图片中写入文字 129 实例106 局部图片的复制 131 实例107 波形图的绘制 133 3.2 图形...

    获取网页内容(含源代码) 此程序利用Delphi12 编写的,初始目的用来自动获取网络连载小说的

    此程序主要目的是充当爬虫,爬取连载的网络小说,根据设置的条件,可以自动获取连载小说,并保存成文本文件,方便阅读。里面有源代码,可以自行参看。

    Delphi 7.0编程实例五十讲-pdf版

    本书融合了在 Windows下利用Delphi 7.0开发应用程序的理论和实践,全面而深入地介绍了利用Delphi 70开发应用程序的常用方法和技巧。本书以实例为上线,以编程方法的介绍为基本,深入浅出地讲解了使用Delphi 7.0进行...

    Delphi5开发人员指南

    11.1.2 在Delphi程序中使用多线程 304 11.1.3 关于线程的滥用 305 11.2 TThread对象 305 11.2.1 TThread基础 305 11.2.2 TThread实例 307 11.2.3 线程的终止 307 11.2.4 与VCL同步 308 11.2.5 一个演示程序 310 ...

    Delphi编程大师2003 4of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

    delphi网络应用

    目在线检测(网络连接情况检测)5.DNS的更改和设置(获取DNS设置)6.MAC Addr(网卡信息的获取)7.FTP-API(使用API函数实现FTP客户端程序)8.FTP服务器(FTP服务器程序,实现了FTP服务的大部分功能)9.HTTPGET...

    Delphi编程大师2003 2of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

Global site tag (gtag.js) - Google Analytics