自动秒收录

抢先式多线程网络蜘蛛


文章编号:677 / 更新时间:2023-04-10 / 浏览:

Win32API支持抢先式多线程网络,这是编写MFC网络蜘蛛非常有用的地方。SPIDER工程(程序)是一个如何用抢先式多线程技术实现在网上用网络蜘蛛/机器人聚集信息的程序。

该工程产生一个象蜘蛛一样行动的程序,该程序为断开的URL链接检查WEB站点。链接验证仅在href指定的链接上进行。它在一列表视图CListView中显示不断更新的URL列表,以反映超链接的状态。本工程能用作收集、索引信息的模板,该模板将这些信息存入到可以用于查询的数据库文件中。

搜索引擎在WEB上使用叫作Robots(也叫爬虫,蜘蛛,蠕虫,漫步者,滑行者等等)的程序收集信息,它从WEB上自动地聚集和索引信息,接着将这些信息存入数据库。(注意:一个机器人将搜索一个页面,然后把这个页面上的链接作为将要索引的新的URL的起点)用户可创建查询去查询这些数据库以发现他们需要的信息。

pThread=newCSpiderThread(CSpiderThread::ThreadFunc,pThreadParams);//创建一个新的CSpiderThread对象;

在类CSpiderThread构造函数中我们在线程参数中设置指针CWinThread*m_pThread,于是我们可以指向这个线程正确的事例:

//简单的工作线程函数

//这里使用SendMessage代替PostMessageUse,以保持当前线程数同步。

//如果线程数大于MAXIMUM_WAIT_OBJECTS(64),本程序将变得不能响应用户输入

//删除lpThreadParams和减少线程总数

这个结构传递给CSpiderThreadThreadProc函数

CSpiderThread对象创建后,我们用CreatThread函数开始一个新的线程对象地执行。

if(!pThread->CreateThread())//开始一CWinThread对象地执行

一旦新的线程正在运行,我们使用::SengMessage函数发送消息到CDocument's->CListView,这个消息带有URL链接的状态结构。

每个新的线程建立一个新的CMyInternetSession类(派生于CInternetSession)对象,并把EnableStatusCallback设置为TRUE,于是,我们可以在所有的InternetSession回调时检查状态。将回调使用的dwContextID设置为线程ID。

intntimeOut=30;//很重要!如果设置太小回引起服务器超时,如果设置太大则回引起线程挂起。

网络连接请求时间超时值在数毫秒级。如果连接请求时间超过这个超时值,请求将被取消。

缺省的超时值是无限的。

/*在重试连接之间的等待的延时值在毫秒级。*/

/*在网络连接请求时的重试次数。如果一个连接企图在指定的重试次数后仍失败,则请求被取消。缺省值为5。*/

在一个单或多线程程序中使用MFCWinIne类,关键是要在所有MFCWinInet类函数周围使用try和catch块。因为互连网有时很不稳定,或者你访问的Web页面已不存在,则这种情况下,将抛出一个CInternetException错误。

你可以为一些目录建立robots.txt文件来防止这些目录被索引。这个机制通常用于保护/cgi-bin/目录。CGI脚本占用更多的要检索的服务器资源。当SPIDER程序检查URL链接时,它的目标是不太快地请求太多的文档。SPIDER程序坚持机器人拒绝的标准。这个标准是机器人开发者之间的协议,允许WWW站点限制URL上的机器人的请求。通过使用这个限制访问的标准,机器人将不检索Web服务器希望拒绝的任何文档。在检查根URL前,程序检查看是否有robots.txt文件在主目录下。如果SPIDER程序发现robots.txt文件,将放弃搜索。另外,程序也检查所有Web页面中的META标记。如果发现一个META标记,它的NAME="ROBOTS"CONTENT="NOINDEX,NOFOLLOW",则不索引那个页面上的URL。

扫描二维码推送至手机访问。

3浏览自媒体运营与推广

2浏览网站结构优化

2浏览外部链接建设

2浏览自媒体运营与推广


相关标签: Spider

本文地址:https://www.badfl.com/article/c741762d0249a60d66fc.html

上一篇:如何和搜索引擎爬虫对话...
下一篇:BaiDuSpider百度蜘蛛占用流量robots.txt设...

发表评论

温馨提示

做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
<a href="https://www.badfl.com/" target="_blank">自动秒收录</a>