用过的一个工具,收藏一下

25 篇文章 0 订阅
12 篇文章 0 订阅

void CtestDlg::OnBnClickedOk()
{
 // TODO: 在此添加控件通知处理程序代码

 _ConnectionPtr m_pConnection;
 try
 {
  m_pConnection.CreateInstance(__uuidof(Connection));
  CString conn;
  conn.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d://wwwroot//mp3//mp3.mdb");
  m_pConnection->Open(_bstr_t(conn),"","",adModeUnknown);
 }
 catch(_com_error e)
 {
  AfxMessageBox(e.Description());
  exit(0);
 }
 _variant_t RecordsAffected;
 for( int i=69;i<=4800;i++)
 {
  MSG msg;
  for(int k=0;k<10;k++)
  {
   if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
   {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
   }
  }
  CString url;
  url.Format("http://cn8.cn/musiclist/mmc_%d.htm",i);
  CString body = GetPage(url);
  if (body.Find("无法找到")>0) continue;
  int f1=body.Find("tt90_music_pic");
  int f2=body.Find("'",f1);
  if (f1<0 || f2 <0) continue;
  CString filename=body.Mid(f1+15,f2-f1-15);//图片
  filename=code(filename);

  saveurl("http://cn8.cn/tt90_music_pic/"+filename,"d://wwwroot//mp3//img//");
  f1=body.Find("'eeeeee'>",f2);
  f2=body.Find("</td>",f1);
  if (f1<0 || f2 <0) continue;
  CString zhuanjiming=body.Mid(f1+9,f2-f1-9);//专辑名
  zhuanjiming=code(zhuanjiming);

  f1=body.Find("special",f2);
  f1=body.Find(">",f1);
  f2=body.Find("<",f1);
  CString geshou = body.Mid(f1+1,f2-f1-1);//歌手名
  geshou=code(geshou);

  f1=body.Find("'eeeeee'>",f2);
  f2=body.Find("</td>",f1);
  CString gongsi=body.Mid(f1+9,f2-f1-9);//发行公司
  gongsi=code(gongsi);

  f1=body.Find("'eeeeee'>",f2);
  f2=body.Find("</td>",f1);
  CString riqi=body.Mid(f1+9,f2-f1-9);//发行日期
  riqi=code(riqi);

  f1=body.Find("'eeeeee'>",f2);
  f2=body.Find("[",f1);
  CString yuyan=body.Mid(f1+9,f2-f1-9);//语言种类
  yuyan=code(yuyan);

  f1=body.Find("</td></tr><tr><td>",f2);
  f2=body.Find("</td></tr><br>",f1);
  CString jianjie=body.Mid(f1+18,f2-f1-18);//简介
  jianjie=code(jianjie);

  f1=body.Find("this.href);'>",f2);
  f2=body.Find("</a>",f1);
  CString str;
  while(f1>0 && f2>0)
  {
   CString songname = body.Mid(f1+13,f2-f1-13);//歌名

   str+=songname+"|";
   //int z1=body.Find("[",f2);
   //int z2=body.Find("]",z1);
   //CString singername=body.Mid(z1+1,z2-z1-1);

   //singername.Replace("'","''");
   //singername.Replace("/"","/"/"");
   //singername.Trim();

   body=body.Mid(f2,body.GetLength()-f2);
   f1=body.Find("this.href);'>",body.Find("试听"));
   f2=body.Find("</a>",f1);
  }
  str=code(str);
   CString sql;
   //sql.Format("insert into 摇滚地带 (songname,影视片名) values ('%s','%s')",songname,singername);
   sql.Format("insert into 专辑 (专辑名称,演唱歌手,发行公司,发行日期,语言种类,图片,专辑说明,歌曲) values ('%s','%s','%s','%s','%s','%s','%s','%s')",zhuanjiming,geshou,gongsi,riqi,yuyan,filename,jianjie,str);
  GetDlgItem(IDC_STATIC)->SetWindowText(sql);
   m_pConnection->Execute(_bstr_t(sql), &RecordsAffected, adCmdText);
  //MessageBox(sql);
  ::Sleep(200);
 }
 m_pConnection=NULL;
 MessageBox("完成");
 //OnOK();
}

void CtestDlg::OnBnClickedCancel()
{
 // TODO: 在此添加控件通知处理程序代码
 KillTimer(1);
 OnCancel();
}

BOOL CtestDlg::saveurl(CString strFile,CString path)
{
 CInternetSession m_cis;
 CHttpConnection *m_pHttp;
 DWORD dwType;
 INTERNET_PORT m_dwPort;
 CString m_strServer;
 CString m_strIniPath;//INI路径
 AfxParseURL(strFile,dwType,m_strServer,strFile,m_dwPort);
 m_cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,5);
 m_pHttp=m_cis.GetHttpConnection(m_strServer,m_dwPort);

 CHttpFile *pFile =m_pHttp->OpenRequest(CHttpConnection::HTTP_VERB_GET,
  strFile, NULL, 1, NULL, NULL, HSR_DOWNLOAD | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT);
 // pFile->AddRequestHeaders(szHeaders);
 try{
  pFile->SendRequest();
 }
 catch(CInternetException* pEx)
 {
  TCHAR szError[1024];
  pEx->GetErrorMessage(szError,1024);
  AfxMessageBox(szError);
  pFile->Close();
  return FALSE;
 }


 CString str;
 if(pFile)
 {
  pFile->QueryInfo(HTTP_QUERY_STATUS_CODE,str);
  if(str=="404")
  {
   pFile->Close();
   return FALSE;
  }

  pFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,str);
  DWORD dwLen=atol(str);
  int n=strFile.ReverseFind('/');
  str=path+strFile.Right(strFile.GetLength()-n-1);
  if (str.GetLength()<10)
  {
   CTime t;
   t=CTime::GetCurrentTime();
   str=t.Format("%Y%m%d%H%M%S");
   time_t s;
   srand((unsigned) time(&s));
   str.Format("%s%ld",str,rand()%999999);
  }

  CStdioFile csf;
  if(!csf.Open(str,CFile::modeCreate|CFile::modeWrite | CFile::typeBinary | CFile::shareDenyWrite))
  {//先为*.upg文件
   AfxMessageBox("写文件"+str+"错误!/n文件正在使用中,请先关闭程序!",MB_ICONSTOP);
   pFile->Close();
   return FALSE;
  }

  char buf[2048];
  DWORD dwRead=0;
  while((n=pFile->Read(buf,sizeof(buf)))>0)
  {
   dwRead+=n;
   MSG msg;
   for(int i=0;i<10;i++)
   {
    if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {
     TranslateMessage(&msg);
     DispatchMessage(&msg);
    }
   }
   csf.Write(buf,n);
  }
  pFile->Close();
 }
 return TRUE;
}

CString CtestDlg::GetPage(CString url)
{
 CInternetSession session;
 CHttpFile *myHttpFile = NULL;
 CString m_SiteName;
 m_SiteName.Format("%s",url);

 CString m_SiteInfo;
 CString myData;
 try
 {
  myHttpFile = (CHttpFile*)session.OpenURL(m_SiteName);
 }
 catch(CInternetException* m_pException)
 {
  delete myHttpFile;
  m_pException->Delete();
  return "";
 }
 if ( myHttpFile )
 {
  while( myHttpFile->ReadString( myData ) )
  {
   m_SiteInfo+=myData;
  }
 }
 return m_SiteInfo;
}

void CtestDlg::getpage(CString url, int page=1)
{
 CString body = GetPage(url);
 int f1=body.Find("666666/">");
 int f2=body.Find("<",f1);
 CString Type = body.Mid(f1+8,f2-f1-8);

}

void CtestDlg::down(CString url)
{
 CString body = GetPage(url);
 int f1=body.Find("<title>");
 int f2=body.Find("</title>",f1);
 if (f1<0 || f2<0) return;
 CString type = body.Mid(f1+7,f2-f1-7);
 if (type.GetLength()<1) return;
 f1=body.Find("images2",f2);
 f1=body.Find("UploadPhotos",f1);
 f2=body.Find(".",f1);
 CString filename=body.Mid(f1+13,f2-f1-13);

 saveurl("http://wallpaper.e-teng.com/UploadPhotos/"+filename+".jpg","g://img//");
 return;
}

CString CtestDlg::code(CString str)
{
   str.Replace("'","''");
   str.Replace("/"","/"/"");
   str.Replace("&nbsp;"," ");
  str.Trim();

 return str;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值