设计自动获取网页和提交表单组件
来源:互联网 发布:数据平滑的方法是 编辑:程序博客网 时间:2024/05/18 02:07
导读:
. 一次做列车时刻表时想到从网页上抓取数据,设计了这个类。 ///网页获取器 class HtmlGetter { public: HtmlGetter(); HtmlGetter::HtmlGetter(CString name) ;CString get_one_page(std::string url); ~HtmlGetter(); ...
PsGrid表单设计开发组件?PsGrid表单设计开发组件?PsGrid表单设计开发组件?这应该是js脚本的问题,我搜索了“回车 提交 表单”~~ ....求助:我在一个网页中输入表单,点提交后想返回上一个网页(已打开)并自动刷新里面的内容,该怎么样? ...
文件格式:PDF/Adobe Acrobat
本文要讨论的就是如果利用JavaScri~t来实现使用Enter键在表单组件间焦点移动。2 获取键盘控制事件JavaScrlpt是一种居于Java程序语言的脚本语言。JavaScript是用在居于Web的网页(包括客户端和服务器端)上的,这个文档里的内容只涉及了客户 ...
Delphi实现网页表单数据的自动提交,Delphi技术库,网络大本营是一个专门发布编程资料,计算机相关技巧的大型网站,收集的资料 ...MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的 ...
五行代码实现ASP无组件上传. Script 目前有很多无组件上传类,大多写的相当复杂,有的居然还只能传文本,最关键的是没有10行代码以下的。 ...Script 问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常。 ...
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,加密,验证码,算法,cookies,ubb, ....form1.submit(); 自动提交表单到FORM里的ACTION即:User_Post_Blog2.asp 到这里已经做到了信息的获取! ...
你就可以选中内容--》点右键出现“加入我的网摘”,这时就会弹出一个IE窗口,自动将网页标题加入表单的对应标题内容,及选中内容加入相应内容项, ...form1.submit(); 自动提交表单到FORM里的ACTION即:User_Post_Blog2.asp 到这里已经做到了信息的获取! ...
文件格式:PDF/Adobe Acrobat - HTML 版
您的浏览器可能无法阅读 PDF 文档。Epasser 建议您查看本文档的 纯文本版本。
11.1.8 为访问者定制确认网页. 当访问者提交表单时,F r o n t P a g e会自动返回信息,确认他输入的内容。这是一个大致的确. 认;你可能喜欢给它增加一些装饰。还可以使用验证域组件来进行装饰,首先要创建一个确认. 网页,然后再在这个网页中使用这些组 ...
引用链接
::::::本文的相关评价及说明信息::::::
一次做列车时刻表时想到从网页上抓取数据,设计了这个类。
///网页获取器
class HtmlGetter
{
public:
HtmlGetter();
HtmlGetter::HtmlGetter(CString name) ;
CString get_one_page(std::string url);
~HtmlGetter();
CString get_page_by_post(std::vector inputs, CString pre_url);
CString get_page_by_get(std::vector inputs, CString pre_url);
void get_file(std::string url, CString SaveToFile);
CString get_last_header();
void Close();
private:
CString LastHeader;
CInternetSession session;
};
使用方法
HtmlGetter htmlgetter;
CString Page1=htmlgetter.get_one_page(http://163.com);
//设置好网页form的inputs
vector cmds;
cmds.push_back("pawsoperator");//input name
cmds.push_back("1");//input value
……
//post,
htmlgetter.get_page_by_post(cmds,"http://......");
实现如下:
#include "stdafx.h"
#include "string"
#include "vector"
#include
#include
#include "./htmlgetter.h"
using namespace std;
//char HtmlGetter::SessSerial=0;
//CString HtmlGetter::SessName;
HtmlGetter::HtmlGetter() : session("session_")
{
}
HtmlGetter::HtmlGetter(CString name) : session(name)
{
}
HtmlGetter::~HtmlGetter()
{
session.Close();
}
void HtmlGetter::Close()
{
session.Close();
}
CString HtmlGetter::get_last_header()
{
return LastHeader;
}
///获取网页
CString HtmlGetter::get_one_page(std::string url)
{
CStdioFile* pFile = NULL;
char szBuff[1024];
CString Ret;
try
{
pFile = session.OpenURL(url.c_str());
}
catch (CInternetException* )
{
logger->warn("OpenURL exception");
return CString(/*"*/"OpenURL exception. ");/*I will retry " +
GetConfString("general", "retry") +
" times.
PMKPkZ1AFf08CkMUPgvMuJiw");*/
}
//LPVOID headbuf=NULL;
//DWORD len;
CString header1;
//((CHttpFile*)pFile)->QueryInfo(HTTP_QUERY_FLAG_REQUEST_HEADERS,headbuf,&len);
if (((CHttpFile *) pFile)->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, header1) ==
TRUE)
{
logger->debugStream() <<"http header:" < LastHeader = header1;
//delete[]headbuf;
}
memset(szBuff, 0, sizeof(szBuff));
UINT nRead = pFile->Read(szBuff, 1023);
while (nRead >0)
{
Ret += (szBuff);
memset(szBuff, 0, sizeof(szBuff));
nRead = pFile->Read(szBuff, 1023);
}
delete pFile;
return Ret;
}
/**下载文件
@return 文件
@author 张浩
*/
void HtmlGetter::get_file(std::string url, CString SaveToFile)
{
//下载文件必须用二进制打开
std::ofstream savefile(SaveToFile, ios::binary | ios::out);
CStdioFile* pFile = NULL;
char szBuff[1024];
try
{
pFile = session.OpenURL(url.c_str());
}
catch (CInternetException* )
{
logger->warn("OpenURL exception");
return ;//CString("OpenURL exception");
}
memset(szBuff, 0, sizeof(szBuff));
UINT nRead = pFile->Read(szBuff, 1023);
while (nRead >0)
{
//Ret += (szBuff);
savefile.write(szBuff, nRead);
memset(szBuff, 0, sizeof(szBuff));
nRead = pFile->Read(szBuff, 1023);
}
delete pFile;
//return Ret;
}
/**POST提交后返回页面
@param inputs name value 对
@param pre_url 提交至action页面
@return 页面
@author 张浩
*/
CString HtmlGetter::get_page_by_post(std::vector inputs,
CString pre_url)
{
//pre_url http://ffsfsdfdsfs:80/fsdfs/fsd.asp
int pos = pre_url. Find('/'), pos2;
pos2 = pos;
if (pre_url.Find('/', pos + 1) == pos + 1)
pos2 = pre_url.Find('/', pos + 2);
CString server = (pos == pos2) ?
(pre_url.Left(pos)) :
(pre_url.Mid(pos + 2, pos2 - pos - 2));
//server ffsfsdfdsfs:80
CString actionform = pre_url.Mid(pos2);
//actionform /fsdfs/fsd.asp
CString Port = "80";
if (server.Find(':') != -1)
{
Port = server.Mid(server.Find(':') + 1);
server = server.Left(server.Find(':'));
}
INTERNET_PORT port = atoi(Port);
logger->debugStream() <<"actionform " < CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded");
// URL-encoded form variables -
// name = "John Doe", userid = "hithere", other = "P&Q"
//url加密
CString params;
if ((inputs.size() % 2) != 0)//不是2的倍数,说明解析错?
{
logger->error("parse post inputs error ");//of <<"parse cmd error" < return CString(" GetConfString("general", "retry") +
" times.
PMKPkZ1AFf08CkMUPgvMuJiw
. 一次做列车时刻表时想到从网页上抓取数据,设计了这个类。 ///网页获取器 class HtmlGetter { public: HtmlGetter(); HtmlGetter::HtmlGetter(CString name) ;CString get_one_page(std::string url); ~HtmlGetter(); ...
PsGrid表单设计开发组件?PsGrid表单设计开发组件?PsGrid表单设计开发组件?这应该是js脚本的问题,我搜索了“回车 提交 表单”~~ ....求助:我在一个网页中输入表单,点提交后想返回上一个网页(已打开)并自动刷新里面的内容,该怎么样? ...
文件格式:PDF/Adobe Acrobat
本文要讨论的就是如果利用JavaScri~t来实现使用Enter键在表单组件间焦点移动。2 获取键盘控制事件JavaScrlpt是一种居于Java程序语言的脚本语言。JavaScript是用在居于Web的网页(包括客户端和服务器端)上的,这个文档里的内容只涉及了客户 ...
Delphi实现网页表单数据的自动提交,Delphi技术库,网络大本营是一个专门发布编程资料,计算机相关技巧的大型网站,收集的资料 ...MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的 ...
五行代码实现ASP无组件上传. Script 目前有很多无组件上传类,大多写的相当复杂,有的居然还只能传文本,最关键的是没有10行代码以下的。 ...Script 问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常。 ...
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,加密,验证码,算法,cookies,ubb, ....form1.submit(); 自动提交表单到FORM里的ACTION即:User_Post_Blog2.asp 到这里已经做到了信息的获取! ...
你就可以选中内容--》点右键出现“加入我的网摘”,这时就会弹出一个IE窗口,自动将网页标题加入表单的对应标题内容,及选中内容加入相应内容项, ...form1.submit(); 自动提交表单到FORM里的ACTION即:User_Post_Blog2.asp 到这里已经做到了信息的获取! ...
文件格式:PDF/Adobe Acrobat - HTML 版
您的浏览器可能无法阅读 PDF 文档。Epasser 建议您查看本文档的 纯文本版本。
11.1.8 为访问者定制确认网页. 当访问者提交表单时,F r o n t P a g e会自动返回信息,确认他输入的内容。这是一个大致的确. 认;你可能喜欢给它增加一些装饰。还可以使用验证域组件来进行装饰,首先要创建一个确认. 网页,然后再在这个网页中使用这些组 ...
引用链接
::::::本文的相关评价及说明信息::::::
一次做列车时刻表时想到从网页上抓取数据,设计了这个类。
///网页获取器
class HtmlGetter
{
public:
HtmlGetter();
HtmlGetter::HtmlGetter(CString name) ;
CString get_one_page(std::string url);
~HtmlGetter();
CString get_page_by_post(std::vector
CString get_page_by_get(std::vector
void get_file(std::string url, CString SaveToFile);
CString get_last_header();
void Close();
private:
CString LastHeader;
CInternetSession session;
};
使用方法
HtmlGetter htmlgetter;
CString Page1=htmlgetter.get_one_page(http://163.com);
//设置好网页form的inputs
vector
cmds.push_back("pawsoperator");//input name
cmds.push_back("1");//input value
……
//post,
htmlgetter.get_page_by_post(cmds,"http://......");
实现如下:
#include "stdafx.h"
#include "string"
#include "vector"
#include
#include
#include "./htmlgetter.h"
using namespace std;
//char HtmlGetter::SessSerial=0;
//CString HtmlGetter::SessName;
HtmlGetter::HtmlGetter() : session("session_")
{
}
HtmlGetter::HtmlGetter(CString name) : session(name)
{
}
HtmlGetter::~HtmlGetter()
{
session.Close();
}
void HtmlGetter::Close()
{
session.Close();
}
CString HtmlGetter::get_last_header()
{
return LastHeader;
}
///获取网页
CString HtmlGetter::get_one_page(std::string url)
{
CStdioFile* pFile = NULL;
char szBuff[1024];
CString Ret;
try
{
pFile = session.OpenURL(url.c_str());
}
catch (CInternetException* )
{
logger->warn("OpenURL exception");
return CString(/*"*/"OpenURL exception. ");/*I will retry " +
GetConfString("general", "retry") +
" times.
PMKPkZ1AFf08CkMUPgvMuJiw");*/
}
//LPVOID headbuf=NULL;
//DWORD len;
CString header1;
//((CHttpFile*)pFile)->QueryInfo(HTTP_QUERY_FLAG_REQUEST_HEADERS,headbuf,&len);
if (((CHttpFile *) pFile)->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, header1) ==
TRUE)
{
logger->debugStream() <<"http header:" <
//delete[]headbuf;
}
memset(szBuff, 0, sizeof(szBuff));
UINT nRead = pFile->Read(szBuff, 1023);
while (nRead >0)
{
Ret += (szBuff);
memset(szBuff, 0, sizeof(szBuff));
nRead = pFile->Read(szBuff, 1023);
}
delete pFile;
return Ret;
}
/**下载文件
@return 文件
@author 张浩
*/
void HtmlGetter::get_file(std::string url, CString SaveToFile)
{
//下载文件必须用二进制打开
std::ofstream savefile(SaveToFile, ios::binary | ios::out);
CStdioFile* pFile = NULL;
char szBuff[1024];
try
{
pFile = session.OpenURL(url.c_str());
}
catch (CInternetException* )
{
logger->warn("OpenURL exception");
return ;//CString("OpenURL exception");
}
memset(szBuff, 0, sizeof(szBuff));
UINT nRead = pFile->Read(szBuff, 1023);
while (nRead >0)
{
//Ret += (szBuff);
savefile.write(szBuff, nRead);
memset(szBuff, 0, sizeof(szBuff));
nRead = pFile->Read(szBuff, 1023);
}
delete pFile;
//return Ret;
}
/**POST提交后返回页面
@param inputs name value 对
@param pre_url 提交至action页面
@return 页面
@author 张浩
*/
CString HtmlGetter::get_page_by_post(std::vector
CString pre_url)
{
//pre_url http://ffsfsdfdsfs:80/fsdfs/fsd.asp
int pos = pre_url. Find('/'), pos2;
pos2 = pos;
if (pre_url.Find('/', pos + 1) == pos + 1)
pos2 = pre_url.Find('/', pos + 2);
CString server = (pos == pos2) ?
(pre_url.Left(pos)) :
(pre_url.Mid(pos + 2, pos2 - pos - 2));
//server ffsfsdfdsfs:80
CString actionform = pre_url.Mid(pos2);
//actionform /fsdfs/fsd.asp
CString Port = "80";
if (server.Find(':') != -1)
{
Port = server.Mid(server.Find(':') + 1);
server = server.Left(server.Find(':'));
}
INTERNET_PORT port = atoi(Port);
logger->debugStream() <<"actionform " <
// URL-encoded form variables -
// name = "John Doe", userid = "hithere", other = "P&Q"
//url加密
CString params;
if ((inputs.size() % 2) != 0)//不是2的倍数,说明解析错?
{
logger->error("parse post inputs error ");//of <<"parse cmd error" <
" times.
PMKPkZ1AFf08CkMUPgvMuJiw