网页爬虫

luozheng 2003-11-27 01:32:55
现在有个项目,它的数据来源于一个网站,需要有个程序不停的去以http的形式去请求,得到服务器发送过来的网页代码,然后在内存里分析出有用的数据。
现在基本可实现这个效果,但不是很稳定,不知道有没有办法,我用一个IE窗口打开那个数据页面,然后用程序通过窗口定位,找到那个窗口,然后,再把窗口里显示的页面的html数据全部读出来,再作分析,这样,就不需要我自已作http的请求了。
不知道有哪位大侠知道该如何做。
急!!!!!!
...全文
300 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Semigod 2003-11-27
  • 打赏
  • 举报
回复
还是用 CAtlHttpClient 模板类来实现比较好。 wininet 效率比较差,IE控件就更慢了。

还有socket tools这个东西也很好用。自己写HTTP客户端就没有必要了
ZHENG017 2003-11-27
  • 打赏
  • 举报
回复
如果不使用代理,把
static const char chProxyServerAddr[]="192.168.0.xx";//改成www.csdn.net
static int iProxyServerPort = 3128;//改成80.
ZHENG017 2003-11-27
  • 打赏
  • 举报
回复
我的使用http代理获取文件的代码,越来越不想跟人说话了,只知道paste. 郁闷。
#include <windows.h>
#include <stdio.h>
#include "ammimeutils.h"
#pragma comment(lib,"ws2_32.lib")
#define PROXY_NEED_AUTH 1
static const char chProxyServerAddr[]="192.168.0.xx";
static int iProxyServerPort = 3128;
static char chAuthLogin[]="yourid:yourpwd";

int main()
{
WSADATA WsaData;
if (WSAStartup(0x202,&WsaData))
return -1;
SOCKET sConnect2Proxy = socket(AF_INET,SOCK_STREAM,0);
if (sConnect2Proxy == INVALID_SOCKET)
return -2;
char chDataBuf[8192] = "";
struct sockaddr_in ProxyAddr = {0};
ProxyAddr.sin_family = AF_INET;
ProxyAddr.sin_addr .S_un .S_addr = inet_addr(chProxyServerAddr);
ProxyAddr.sin_port = htons(iProxyServerPort);
if (0 == connect(sConnect2Proxy,(const sockaddr*)&ProxyAddr,sizeof(sockaddr_in)))
{
sprintf(chDataBuf,"GET http://expert.csdn.net/Expert/topic/2501/2501139.xml?temp=.6500666 HTTP/1.1\r\n");
CBase64Utils base64;
#ifdef PROXY_NEED_AUTH
lstrcat(chDataBuf,"Proxy-Authorization: Basic ");
lstrcat(chDataBuf,base64.Encode(chAuthLogin,lstrlen(chAuthLogin)));
#endif
lstrcat(chDataBuf,"\r\n\r\n");
int iTransCnt = 0;
iTransCnt = send(sConnect2Proxy,chDataBuf,lstrlen(chDataBuf),0);
if (iTransCnt >0)
{
iTransCnt = recv(sConnect2Proxy,chDataBuf,8192,0);
if (iTransCnt >0)
{
printf(chDataBuf);
}
}
}
shutdown(sConnect2Proxy,2);
closesocket(sConnect2Proxy);
WSACleanup();
return 0;
}
sevencat 2003-11-27
  • 打赏
  • 举报
回复
这个想法也比较巧妙。是不是偷人家数据吧?以前我想将一个网站上的一些表格用这种方法搞下来的。后来懒了...

UP一下先。
铖邑 2003-11-27
  • 打赏
  • 举报
回复
怎么会用这么笨的办法,这样做有什么好处呢?不就是少写几行代码而已。
你可以用wininet API,甚至直接用socket连上去,输入一个get命令就可以将网页取下来。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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