网页数据采集

小马喝水 2010-09-14 03:57:30
现在帮朋友做一个小工具,定时采集这个网站上的开奖号码http://jk.trade.500wan.com/pages/trade/ssc/trade.php
大家有没有做过类似的,给点思路。注意我要采集的是网页上显示的数据,不是要它的网页源代码。
...全文
797 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小马喝水 2010-09-16
  • 打赏
  • 举报
回复
忘记结贴了,没有得到对我有用的方案,有点失望,可能大家觉得分太少了吧。还是要谢谢热心朋友的帮忙。
Eleven 2010-09-15
  • 打赏
  • 举报
回复
又是做网页爬虫。。
小马喝水 2010-09-15
  • 打赏
  • 举报
回复
唉,最近在CSDN上发的几个帖子提出的问题都没有得到多少有价值的参考,算了明天结贴了
小马喝水 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mildsong 的回复:]
可以使用WebBrowser对象加载目标URL,这就相当于你已经下载网页到本地了
然后使用DOM对象要对网页进行分析,获取你想要的数据
[/Quote]
其实这个是我现在用的方式,主要是用WebBrowser加载占用太大的内存,而且加载的速度也很慢,所以想选择更好点的方法
MildSong 2010-09-14
  • 打赏
  • 举报
回复
可以使用WebBrowser对象加载目标URL,这就相当于你已经下载网页到本地了
然后使用DOM对象要对网页进行分析,获取你想要的数据
小马喝水 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hmm7e 的回复:]
引用 7 楼 zhaoze87 的回复:

引用 6 楼 hucailai 的回复:
如果html结构是固定的话,直接可以读到指定行,然后提取出你要的数据。

应该是固定的,请问怎样实现是说的方法?


解析网页啊,查找特定标记(如SRC="http://xxx.xxx.xxx"),读取引号中间的内容计可.
[/Quote]

这个网页不是这样结构,你先看看它的源代码
「已注销」 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhaoze87 的回复:]

引用 6 楼 hucailai 的回复:
如果html结构是固定的话,直接可以读到指定行,然后提取出你要的数据。

应该是固定的,请问怎样实现是说的方法?
[/Quote]

解析网页啊,查找特定标记(如SRC="http://xxx.xxx.xxx"),读取引号中间的内容计可.
小马喝水 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hucailai 的回复:]
如果html结构是固定的话,直接可以读到指定行,然后提取出你要的数据。
[/Quote]
应该是固定的,请问怎样实现是说的方法?
hucailai 2010-09-14
  • 打赏
  • 举报
回复
如果html结构是固定的话,直接可以读到指定行,然后提取出你要的数据。
小马喝水 2010-09-14
  • 打赏
  • 举报
回复
3楼给的代码只是获得了网页的源代码,我要的不是源代码,而是网页上显示的数据
小马喝水 2010-09-14
  • 打赏
  • 举报
回复
楼上的热心人可以贴一段示例代码吗?
hucailai 2010-09-14
  • 打赏
  • 举报
回复
CString url;
GetDlgItemText(IDC_EDIT1,url); // IDC_EDIT1 是一个输入框的名字。
char* headers="Accept:*/*\r\nAccept-Language:zh-cn\r\nUser-Agent:VCTestClient\r\n";
CInternetSession Sess;
CHttpFile* cFile = (CHttpFile*)Sess.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));

DWORD dwStatusCode;
cFile->QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK)
{
CString szData,szAllData;
while(cFile->ReadString(szData))
{
szAllData += szData;
szAllData += "\r\n";
}

cFile->Close();
Sess.Close();
CString name = GetFileName(url,TRUE);
CFile file(name, CFile::modeCreate | CFile::modeWrite);
file.Write(szAllData,szAllData.GetLength());
file.Close();
}
else
{
MessageBox("请求失败。。。。");
}
matrixnull 2010-09-14
  • 打赏
  • 举报
回复
获取网页源码,解析DOM结构,就可以取到网页元素特定位置的内容了
hucailai 2010-09-14
  • 打赏
  • 举报
回复
如果网页每次都是固定的应该不难

先读取html代码,再把指定位置的数据提取出来,可以用CHttpFile试下。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧