社区
网络编程
帖子详情
提取网页中的所有的链结?
babam
2004-06-30 05:46:01
有很多的链结都是由脚本来生成的。这个有现成的解决方案吗??
还要用多线程。开始愁了。
谢谢了!
...全文
178
15
打赏
收藏
提取网页中的所有的链结?
有很多的链结都是由脚本来生成的。这个有现成的解决方案吗?? 还要用多线程。开始愁了。 谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
babam
2004-07-02
打赏
举报
回复
大哥你把所有主机地址后面的字符都删除了,可以不删除吗?
删除的话有很多链结都取得不对啊!
babam
2004-07-02
打赏
举报
回复
查了一下,大哥是牛人谢谢了
babam
2004-07-02
打赏
举报
回复
相对连接是什么??我是菜鸟
yst_killed
2004-07-01
打赏
举报
回复
下载时候你可以用多线程执行 GetHtml()这个函数
当然了,你需要一个不停的输入URL的程序,这个估计你自己能写吧!
以上程序取道的URL都存在一个文本文件里了,url.txt
yst_killed
2004-07-01
打赏
举报
回复
靠,贴出来怎么这样,你调整一下吧
对了,你还需要
再 StdAfx.h里添加
#pragma warning(disable : 4192)
#pragma warning(disable : 4146)
#import <mshtml.tlb> // Internet Explorer 5
#import <shdocvw.dll>
yst_killed
2004-07-01
打赏
举报
回复
这个东西我做了一个
最好的办法就是下载下这个网页
打开他,查询里面的<href>这个标志
取出全部链接~
BOOL CDghttpDlg::GetHtml(CString SavePath, CString UrlStr, CString UrlName)
{
CInternetSession session;
CInternetFile* file = NULL;
try
{
// 试着连接到指定URL
file = (CInternetFile*) session.OpenURL(UrlStr);
}
catch(CInternetException* m_pException)
{
// 如果有错误的话,置文件为空
file = NULL;
m_pException->Delete();
return FALSE;
}
// 用dataStore来保存读取的网页文件
CStdioFile dataStore;
if (file)
{
CString somecode; //也可采用LPTSTR类型,将不会删除文本中的\n回车符
CString UrlNamePath;
UrlNamePath.Format("%s%s",SavePath,UrlName);
BOOL bIsOk = dataStore.Open(UrlNamePath,CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite | CFile::typeText);
if (!bIsOk)
return FALSE;
// 读写网页文件,直到为空
while (file->ReadString(somecode) != NULL) //如果采用LPTSTR类型,读取最大个数nMax置0,使它遇空字符时结束
{
dataStore.WriteString(somecode);
dataStore.WriteString("\n"); //如果somecode采用LPTSTR类型,可不用此句
}
file->Close();
delete file;
}
else
{
dataStore.WriteString(_T("到指定服务器的连接建立失败..."));
return FALSE;
}
return TRUE;
}
取网页的
接下来是去链接的
void CDghttpDlg::GetAllUrl(CString strPath, CString FileName)
{
// UpdateData(true);
CFile file;
CFileException e;
CString url;
CString str;
str.Format("%s%s", strPath, FileName);
if(file.Open(str,CFile::modeReadWrite,&e))
{
// DWORD TCount;
DWORD byte = file.GetLength();
// m_pro.SetRange(0,byte);
while(byte)
{
char buf[100];
UINT count = file.Read(buf,100);
byte -=count; //因为网页类内容很多所以分块取,count为每次取得字符数量,byte为文件总字符量
for(int i=3;i<100;i++)
{
//判断m_url是不是等于url链接标志符href如果是开始采集url
CString m_url1;
m_url1.Format("%c%c%c%c",buf[i-3],buf[i-2],buf[i-1],buf[i]);
if(m_url1 == "href")
{
url="";
int jcount=0;
if(buf[i+2]=='"')
{//判断是不是"
jcount = i+3;
CString gettemphttp;
gettemphttp.Format("%c%c%c%c%c%c%c",buf[jcount],buf[jcount+1],buf[jcount+2],buf[jcount+3],buf[jcount+4],buf[jcount+5],buf[jcount+6]);
if(gettemphttp!="http://")
continue;
}
else
{
jcount = i+2;
CString gettemphttp1;
gettemphttp1.Format("%c%c%c%c%c%c%c",buf[jcount],buf[jcount+1],buf[jcount+2],buf[jcount+3],buf[jcount+4],buf[jcount+5],buf[jcount+6]);
if(gettemphttp1!="http://")
continue;
}
url+="http://";
for(int j=jcount+7;j<100;j++)
{
if(buf[j]==' '||buf[j]=='>'||buf[j]=='"'||buf[j]=='/')
{
//将取道的url存入文件中并换行
CFile writefile;
CFileException e1;
str.Format("%s%s",strPath,"url.txt");
if(writefile.Open(str,CFile::modeReadWrite,&e))
{
url+="\r\n";
writefile.Seek(0L,CFile::end);
char * urlchar =(LPSTR)(LPCTSTR)url;
writefile.Write(urlchar,url.GetLength());
writefile.Close();
//AfxMessageBox(_T("写文件成功!"));
}
else
{
afxDump << "File could not be opened"<<e1.m_cause<<"\n";
}//结束
i=j;
break;
}
url = url+buf[j];
}
}
}
}
file.Close();
}
else
{
afxDump << "File could not be opened"<<e.m_cause<<"\n";
}
}
xdljf
2004-07-01
打赏
举报
回复
跟踪调试呀,不同的环境,不同的机子,下载下来的东东一般都会有问题的。
babam
2004-07-01
打赏
举报
回复
先谢谢大家,这个代码在debug下运行报错!
yst_killed
2004-07-01
打赏
举报
回复
我没有计算相对连接
babam
2004-07-01
打赏
举报
回复
yst_killed(不会游泳的鱼)
您的程序里取到的sina首页页面链结为592
用vckbase取到的sina首页页面链结为852
为什么呢??
babam
2004-07-01
打赏
举报
回复
我原来的程序已经可以把网页保存到本地。我直接用你的第二个函数
但是函数的参数是什么意思呢??
PiggyXP
2004-06-30
打赏
举报
回复
http://www.vckbase.com/code/comtech/ie/GetLinks21.zip
这里有一份源码的,实现了楼主需要的功能
楼主可以参考一下
PiggyXP
2004-06-30
打赏
举报
回复
首先就是要获得网页的代码
然后就是如同楼上所说,提取里面的字符串就好了
不过链接的标记有不少的,都要一一进行处理
yhqs540
2004-06-30
打赏
举报
回复
把网页代码得到。就有<a href>那个标记啊。去里面的地址就好了
xdljf
2004-06-30
打赏
举报
回复
http://www.vckbase.com/code/listcode.asp?mclsid=17&sclsid=1711
网页
链接
提取
精灵 v1.1
网页
链接
提取
精灵,是一款很实用的
网页
链接抓取、收集工具,只需输入要抓取的
网页
,程序就可以快速的收集
网页
里所包含的
网页
地址。
超链接
提取
工具 网站链接抓取器下载
提取
网页
全部超链接
超链接
提取
工具 网站链接抓取器下载
提取
网页
全部超链接
网络爬虫 之 PhantomJS技术实战
本课程使用java作为编程语言,主要内容包括爬虫的基本原理,使用Phantomjs技术抓取拉钩企业招聘信息进行系统分析、Phantomjs的详细... (注意: 作业需写在CSDN博客
中
,请把作业链接贴在评论区,老师会定期逐个批改~~)
网页
网站链接抓取
提取
,SEO人员必备
通过输入网址抓取某个页面的所有链接,是SEO人员必备软件
c# .net 网络爬虫
网页
提取
手写网络爬虫 能抓取
网页
广度优先 可设置深度 vs2008测试 能进行
网页
提取
内容
提取
标题
提取
meta
提取
server数据入库 欢迎参考 有好的建议请发送邮件blackjunes@sina.com
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章