导读:  


 . 一次做列车时刻表时想到从网页上抓取数据,设计了这个类。 ///网页获取器 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://); 
  
  //设置好网页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");*/ 
          
  } 
          
  for (vector 
          
            ::iterator i = inputs.begin(); 
           
  i != inputs.end(); 
           
  ++i,++i) 
           
  { 
           
  if (i != inputs.begin()) 
           
  params += '&'; 
           
  params += UrlEncode(i->GetBuffer(i->GetLength())); 
           
  logger->debugStream() <<"UrlEncode param1:" 
           
  < 
           
             GetLength()) <<" to " 
            
  < 
            
              GetLength())); 
             
  params += '='; 
             
  vector 
             
               ::iterator j = i;++j; 
              
  params += UrlEncode(j->GetBuffer(j->GetLength())); 
              
  logger->debugStream() <<"UrlEncode param2:" 
              
  < 
              
                GetLength()) <<" to " 
               
  < 
               
                 GetLength())); 
                
  } 
                
  CString strFormData = params;//_T(params.GetBuffer(params.GetLength())/* "search_txt=xmlspy"*/); 
                
  logger->debugStream() <<"strFormData: " < 
                 
                 
  CString Ret; 
                 
  try 
                 
  { 
                 
  //CInternetSession session; 
                 
  CHttpConnection* pConnection = session.GetHttpConnection(server/*_T("ServerNameHere")*/, 
                 
  port); 
                 
  CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, 
                 
  actionform/*_T("FormActionHere")*/); 
                 
  BOOL result = pFile->SendRequest(strHeaders, 
                 
  (LPVOID) (LPCTSTR) strFormData, 
                 
  strFormData.GetLength()); 
                 
  char szBuff[1024]; 
                 
  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; 
                 
  } 
                 
  catch (CInternetException* ) 
                 
  { 
                 
  logger->warn("get_page_by_post exception"); 
                 
  return CString("get_page_by_post exception .");/* maybe url is not exist. I will retry " + 
                 
  GetConfString("general", "retry") + 
                 
  " times. 
                 


PMKPkZ1AFf08CkMUPgvMuJiw");*/ 
                 
  } 
                 
  return Ret; 
                 
  } 
                 
  /**get提交后返回页面 
                 
  方法:先将参数url编码,再调用get_one_page 
                 
  @param inputs name value 对 
                 
  @param pre_url 提交至action页面 
                 
  @return 页面 
                 
  @author 张浩 
                 
  */ 
                 
  CString HtmlGetter::get_page_by_get(std::vector 
                 
                   inputs, 
                  
  CString pre_url) 
                  
  { 
                  
  //url加密 
                  
  CString params; 
                  
  if ((inputs.size() % 2) != 0)//不是2的倍数,说明解析错? 
                  
  { 
                  
  logger->error("parse get inputs error ");//of <<"parse cmd error" < 
                   
                   
  return CString(" 
                    
                    
  " times. 
                    


PMKPkZ1AFf08CkMUPgvMuJiw");*/ 
                    
  } 
                    
  for (vector 
                    
                      ::iterator i = inputs.begin(); 
                     
  i != inputs.end(); 
                     
  ++i,++i) 
                     
  { 
                     
  if (i != inputs.begin()) 
                     
  params += '&'; 
                     
  params += UrlEncode(i->GetBuffer(i->GetLength())); 
                     
  logger->debugStream() <<"UrlEncode param1:" 
                     
  < 
                     
                       GetLength()) <<" to " 
                      
  < 
                      
                        GetLength())); 
                       
  params += '='; 
                       
  vector 
                       
                         ::iterator j = i;++j; 
                        
  params += UrlEncode(j->GetBuffer(j->GetLength())); 
                        
  logger->debugStream() <<"UrlEncode param2:" 
                        
  < 
                        
                          GetLength()) <<" to " 
                         
  < 
                         
                           GetLength())); 
                          
  } 
                          
  std::string newurl = pre_url + "?" + params; 
                          
  logger->debugStream() <<"newurl: " < 
                           
                           
  return this->get_one_page(newurl); 
                           
  }