`
buliedian
  • 浏览: 1238394 次
  • 性别: 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中,我们可以使用 Indy 库或者 Wininet 库来实现HTTP请求,这两个库提供了丰富的API接口用于发送GET或POST请求,从而获取网页内容。 1. **Indy库**:Indy是一个开源的网络组件库,包含了处理HTTP、FTP、...

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

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

    delphi7+网页采集之网址提取,内容提取,图片提取,网页源码

    在网页采集领域,Delphi 7可以用来创建自定义的HTTP客户端,通过发送HTTP请求来获取网页数据。 **网址提取**是网页采集的第一步。在Delphi 7中,我们可以利用 Indy 或 WinInet 组件库来实现HTTP请求。通过向服务器...

    delphi+js+edgebrowser获取网页源码

    近期使用delphi+edgebrowser开发一个学习工具,需要获取edgebrowser打开网页的源码,在国内各大网站苦苦寻觅若干天无果,呕心沥血特发奇想,通过delphi+js获取edgebrowser获取网页源码的方法,终于解决了问题。...

    delphi抓取网页源码

    以上就是一个基本的Delphi抓取网页源码的过程。然而,实际的网页抓取可能涉及到更复杂的情况,比如处理重定向、登录认证、处理cookies等。此外,现代的Web应用经常使用Ajax技术,动态加载内容,这种情况下可能需要...

    Delphi模拟搜索引擎蜘蛛抓取网页内容.rar

    2. **HTTP请求**:蜘蛛通过发送HTTP请求到目标URL来获取网页内容。在Delphi中,可以使用 Indy 或 Synapse 这样的库来实现HTTP通信。 3. **HTML解析**:收到响应后,蜘蛛需要解析HTML内容。这通常涉及到DOM(文档...

    Delphi编写的屏幕抓取程序

    - 自动滚动抓取:对于长网页或其他需要滚动查看的内容,程序可以自动滚动并拼接截图。 - 鼠标光标捕获:在截图中包含鼠标光标及其当前状态,如指针形状和按钮状态。 - 快捷键支持:设置快捷键组合,使用户能快速触发...

    TEdgeBrowser控件+delphi10.4.1获取网页源码demo.rar

    总的来说,使用TEdgeBrowser控件和JavaScript,Delphi开发者可以轻松地在应用程序中获取网页源码,实现与Web内容的深度交互。这个过程展示了跨平台开发的强大能力,以及Delphi与现代Web技术的无缝集成。

    多线程delphi Http 下载文件或者获取网页内容控件,不卡界面

    在Delphi编程环境中,开发一个能够进行多线程HTTP下载文件或获取网页内容的控件是提高用户体验的重要手段。在单线程模式下,如果执行此类任务,可能会导致应用程序界面冻结,用户无法进行其他操作。为了解决这个问题...

    Delphi 获取网页源代码.rar

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

    CEF4Delphi-入门-1_delphi_CEF_web_

    5. **JavaScript交互**:学习如何通过CEF的C++ API或Delphi的绑定接口与加载的网页进行JavaScript交互,例如调用JavaScript函数、获取网页数据或改变DOM元素。 6. **错误处理和调试**:理解和处理CEF与Delphi集成时...

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

    本项目标题为“[编译通过]delphi获取网页源代码”,意味着它提供了一个Delphi程序,用于从互联网上抓取并显示网页的HTML源代码。这涉及到网络编程和HTTP协议的理解,以及如何在Delphi环境中实现这些功能。 首先,...

    Delphi 网页采集程序 源码

    1. **HTTP协议与网络请求**:Delphi的 Indy 或 Wininet 库可以用来发送HTTP请求,获取网页内容。理解HTTP头、GET和POST方法是基础,可能还需要处理Cookie、Session等来模拟用户交互。 2. **HTML解析**:源码可能...

    简洁界面的Delphi网页浏览器程序.rar

    《基于Delphi构建的简洁网页浏览器程序解析》 在编程世界中,Delphi是一款历史悠久且功能强大的集成开发环境(IDE),尤其擅长Windows桌面应用程序的开发。本篇文章将深入探讨一个用Delphi编写的简洁界面的网页...

    delphi编写的获取外网IP的程序

    在这个特定的案例中,我们讨论的是一个使用Delphi编写的程序,其功能是获取用户的外网IP地址。外网IP,也称为公共IP,是互联网上唯一标识你网络设备的地址,与局域网内的私有IP不同,它是由互联网服务提供商(ISP)...

    Delphi网页爬取.rar

    在本项目中,开发者可能使用了其中一个库来与服务器通信,获取网页内容。 一旦获取到HTML源代码,下一步就是解析网页内容。这通常通过XML或HTML解析库来完成,如HTML Agility Pack (HAP) 或 THTMLParser。这些库...

    Delphi将网页保存为图片

    在Delphi中,我们可以使用TWebBrowser组件,这是一个内置的控件,能够嵌入到应用程序中,用于显示网页内容。TWebBrowser是Internet Explorer(IE)引擎的一个封装,因此它依赖于系统上安装的IE版本。 以下是实现这...

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

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

    Delphi SQL Server数据库备份程序_delphi_SQL_ServerDelphi_sqlserver_

    标题 "Delphi SQL Server数据库备份程序" 涉及到的是使用Delphi编程语言与Microsoft SQL Server数据库进行交互,特别是实现数据库的自动化备份功能。在IT领域,数据库备份是至关重要的,它保护了数据免受意外丢失或...

    delphi网页安装程序

    在本案例中,"delphi网页安装程序"指的是使用Delphi开发的用于创建网页版自动安装程序的工具或项目。这种程序通常会提供一种用户友好的界面,使得用户可以在Web环境中方便地下载并安装软件。 网页版安装程序的核心...

Global site tag (gtag.js) - Google Analytics