php 循环抓取网页内容(BBS采集多为3P代码为多(3))
优采云 发布时间: 2022-03-03 20:11php 循环抓取网页内容(BBS采集多为3P代码为多(3))
人们在抓取网页内容时,通常认为是从互联网上窃取数据,然后将采集到的数据链接到自己的互联网上。其实您也可以将采集采集的数据作为公司的参考,或者将采集到的数据与自己公司的业务进行比较。
目前网页采集多为3P代码(3P表示ASP、PHP等)
, JSP)。使用的最有代表性的是BBS的新闻采集系统,以及网上流传的新浪新闻采集系统,都是ASP程序使用的,但是理论上速度不是很好.
用其他软件采集尝试多线程不是更快吗?答案是肯定的。你可以使用DELPHI、VC、VB或JB,但PB似乎更难做。下面用DELPHI采集解释
网页数据。
一、 简单新闻采集
新闻采集 是最简单的,只要确定标题、副标题、作者、来源、日期、新闻正文和页码即可。网页内容必须在采集之前获取,所以在DELPHI中添加idHTTP控件(indyClients面板中),然后使用idHTTP1.GET方法获取网页内容. 声明如下:
函数获取(AURL:字符串):字符串;超载;
AURL 参数为字符串类型,用于指定 URL 地址字符串。函数return也是字符串类型,返回网页的HTML源文件。例如,我们可以这样称呼它:
tmpStr:= idHTTP1.Get('');
调用成功后,网易首页的代码保存在tmpstr变量中。
接下来说说数据的截取。在这里,我定义了这样一个函数:
functionTForm1.GetStr(StrSource,StrBegin,StrEnd:string):string;
变量
in_star,in_end:整数;
开始
in_star:=AnsiPos(strbegin,strsource) 长度(strbegin);
in_end:=AnsiPos(strend,strsource);
结果:=复制(strsource,in_sta,in_end-in_star);
结尾;
StrSource:字符串类型,代表HTML源文件。
StrBegin:字符串类型,表示截取开始的标志。
StrEnd:字符串,标记截取的结束。
该函数将一段文本从 StrSource 返回到字符串 StrSource 中的 StrBegin。
例如:
strtmp:=TForm1.GetStr('A123BCD','A','BC');
运行后strtmp的值为:'123'。
关于函数中使用的AnsiPos和copy,它们是由系统定义的。可以在delphi的帮助文件中找到相关说明。我这里也简单说一下:
函数 AnsiPos(const Substr, S: string): 整数
返回 S 中第一次出现的 Substr。
函数复制(strsource,in_sta,in_end-in_star):字符串;
返回字符串 strsource 中从 in_sta(整数数据)到 in_end-in_star(整数数据)的字符串。
有了上面的函数,我们就可以通过设置各种标签来截取想要的文章内容。在程序中,麻烦的是我们需要设置很多标签。要定位某个内容,我们必须设置
它的开始和结束标记。比如要获取网页上的文章标题,必须提前查看网页代码,查看文章标题前后的一些特征码,利用这些特征码进行拦截文章 标记
题。
让我们在实践中演示一下,假设 文章 的地址为 采集 是
代码是:
新页面 1
文章标题
ercolor="#111111"
>
作者
出处
这是 文章 内容主体。