ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] Ãö©óºô­¶¸ê®Æ§ì¨ú°ÝÃD

¥»©«³Ì«á¥Ñ VBALearner ©ó 2017-2-10 21:24 ½s¿è

¦^´_ 18# sujane0701
¦^´_ 20# c_c_lai

À³C¤jªº´Á«Ý¡A¥[¤J²Ä¤G¦¸POST¡A§¹½Z¡C
·Q·íªìC¤j¤]¦^À³§Ú³\¦hVBAªº§C¯à°ÝÃDxD¡A°O±o·í®É§ÚPO¤F¤@½g¤À¨É¤å"¤T¤jªk¤H¶R½æ¶W¸ê®Æ¾ã²z..."¡Aµ²ªG´N¦³°ª¤â¥ÎPython§â¦Û°Ê¤U¸üExcelªºµ{¦¡½X¶K¥X¨Ó¡A¤Þµo´X¤Q­¶ªº¼ö¯P°Q½×¡C­Y¤£¬O°ª¤âµL¨p¤À¨É¡B¥O§Ú¹ïPython»y¨¥¤j¶}²´¬É¨Ã²£¥Í°ª«×¿³½ìªº¸Ü¡A§Ú«K¤£·|¥h¾Ç²ßPy¡A¥i¯àÁÙ°±¯d¦bVBA§a... ¦]¦¹¡A§¹¾ãªºµ{¦¡½XS¤j¡BC¤j½Ð¨É¥Î¡A¨Ã¹ªÀyPy°ª¤â¹ï§Úªºµ{¦¡½X´£¥X«Ø¨¥¡AS¤j±z±µ¤U¨Ó¥u»Ý­n§â¸ê®Æ¦s¦¨Excel¡A³o¤@¨B«Ü²³æ¡Aºô¸ô§ä§ä§a¡A¥[ªo¡C
  1. import requests
  2. import time
  3. from bs4 import BeautifulSoup

  4. postfreq = 0.8 #ÁקK¹L«×ÀWÁcªº³X°Ý³Q·í¦¨´c·Nµ{¦¡§ðÀ»(Ãþ¦ü¤p«¬DDOS)¡A¬í¼Æ¶¡¹j³X°Ý¬Oª¦ÂΪº°ò¥»Â§»ª

  5. #¶È¥H¨âµ§¥D´£³æ¸¹½X¥Ü½d¡A±ý¼W¥[¦Û¦æ§ó§ï§Y¥i
  6. ¥D´£³æ¸¹½X = ['160-69306532','608-10318674'] #,'851-26325773','479-32003532','695-08802916','297-64647785']

  7. with requests.session() as r:
  8.     res = r.get('https://accs.tradevan.com.tw/accsw-bin/APACCS/userLoginAction.do?userid=GUEST&password=GUEST')
  9.     for code in ¥D´£³æ¸¹½X:
  10.         print('¥D´£³æ¸¹½X :',code,'\n')
  11.         time.sleep(postfreq)
  12.         payload = {'mawb_no':code,'¬d¸ß':'¬d¸ß'}
  13.         res = r.post("https://accs.tradevan.com.tw/accsw-bin/APACCS/cImMergeQueryAction.do", data=payload) #²Ä¤@¦¸³X°Ý
  14.         res.encoding = "big-5"
  15.         html = BeautifulSoup(res.text,"html.parser")
  16.         num = 1
  17.         for tr in html.body.select('table')[4].select('tr')[1:]: #§âTable¸Ìªºtr¸ê®Æ³v¦C¨ú¥X
  18.             summary = [] #«Ø¥ßºK­n¸ê°Tªº¦s©ñ°}¦C
  19.             postdata = [] #¤G¦¸³X°Ý©Ò»Ý°Ñ¼Æªº¦s©ñ°}¦C
  20.             for td in tr.select('td'):
  21.                 summary.append(td.text.strip())
  22.                 if td == tr.select('td')[len(tr.select('td'))-1]: #³o¸Ì¦³¤U¤@­ÓPOST©Ò»Ýªº¸ê°T(°Ñ¼Æ)¡A³z¹LÆ[¹îºô­¶­ì©l½X±oª¾
  23.                     postdata.append(str(td).split('&')[1].replace('flight_no=','')) #°Ñ¼Æ1
  24.                     postdata.append(str(td).split('&')[2].replace('flight_date=','')) #°Ñ¼Æ2
  25.                     postdata.append(str(td).split('&')[3].replace('est_arrival_date=','')) #°Ñ¼Æ3
  26.    
  27.             print('  ','ºK­n¸ê°T'+str(num),':',summary,'\n') #²Ä¤@¦¸¬d¸ß±o¨ìªººK­n¸ê®Æ
  28.             num+=1

  29.             payload = {'mawb_no':code,
  30.                        'voyage_flight_no':postdata[0],
  31.                        'est_arrival_date':postdata[2],
  32.                        'flight_date':postdata[1],
  33.                        'qry_mawb_no':code,
  34.                        'qry_sort':'0'
  35.                        }
  36.             time.sleep(postfreq)
  37.             res = r.post("https://accs.tradevan.com.tw/accsw-bin/APACCS/cImMergeListAction.do", data=payload) #²Ä¤G¦¸POST
  38.             res.encoding = "big-5"
  39.             html = BeautifulSoup(res.text,"html.parser")

  40.             print('  ','¸Ô²Ó¸ê®Æ¦p¤U :')
  41.             for tr in html.select('table')[4].select('tr'):
  42.                 data = []
  43.                 for td in tr.select('td'):
  44.                     data.append(td.text.replace('\r','').replace('\n','').replace(' ','').strip())
  45.                 print('\t',data)
  46.             print('\n')
  47.             #¹B¥Î¨ä¥L¼Ò²Õ§âª¦¨ìªº¸ê®Æ¦s¦¨Excel§Y¤j¥\§i¦¨¡A¬Æ¦Ü¥i¥H¶i¤@¨B¹B¥Îselect»yªk¿z¿ï¯S©w¦ì¸mªº¸ê®Æ
½Æ»s¥N½X
¯u¤ß·PÁ¨C¤@¦ìÄ@·N¤À¨É©Ò¾Ç¡B«ü¾É·s¤âªº¤H!

TOP

¦^´_ 21# VBALearner
ÆZ¤£¿ùªº¸àÄÀ¡I
ÁÂÁÂÅo¡I

TOP

¨þ,¤p§Ì¤Ó®t«l¤F,VBALearner¤j§Y¨Ï¤½§Gµª®×,¤p§Ì¼È®ÉÁÙ¬O¤@ª¾¥b¸Ñ,¥ý¦¬¤UVBALearner¤jªº¤j§¥]¦n¦n¬ã¨s,«D±`·PÁÂ!

TOP

¥»©«³Ì«á¥Ñ VBALearner ©ó 2017-2-13 21:25 ½s¿è

¦^´_ 23# sujane0701

¨SÃö«Y¡A§Ú¥u§Æ±æÀ°§UÄ@·N¾Ç²ß¦Ó¤£¬O¥u¦ù¤â°Q§K¶Oµ{¦¡ªº¤H¡C
±z¬O­Ó³Qµ{¦¡«Â¤O¿Eµo¼ö±¡ªº¤H¡A¸ò¤p§Ì§Ú¤@¼Ë¡A¤p§Ì§Ú¤@¦~«e³s¤@¥yµ{¦¡½X³£¤£·|¼g¡A§Æ±æ±z«O«ù³o¥÷¼ö±¡«ùÄò¾Ç²ß¡C
±z­Y¥u­n³¡¤À¸ê®Æ¡A¥i¥H³z¹L§ó§ï¥H¤U§ÚPOªº¤T¥y»yªk¡A¥h¤@¤@¬D¥X­n¦s¨úªº¸ê®Æ¦ì¸m¡C¨Ò¦p: html.select('table')[4].select('tr')[2].select('td')[1] ¥i¥H¬D¥Xªí®æ¤¤²Ä¤T¦C±q¥ª¼Æ¨Ó²Ä¤G­Ó¸ê®ÆÂI¡A¤]´N¬O"³f´Ì"ªº¸ê®ÆÂI¡AµM«á¤@¤@¿é¤J¶i°}¦C«á¡A¦A¤@¨Ö¼g¤JExcel§Y¥i§¹¦¨§Aªº¥Ø¼Ð¡A¤u§@¶¶§Q !
  1.             for tr in html.select('table')[4].select('tr'):
  2.                 data = []
  3.                 for td in tr.select('td'):
½Æ»s¥N½X
  1. data = []
  2. data.append(html.select('table')[4].select('tr')[2].select('td')[1])
  3. data.append(html.select('table')[4].select('tr')[?].select('td')[?])

  4. with open("xxx.xlsx",xx) as excel:
  5.     #¼g¤Jªºµ{¦¡½X
½Æ»s¥N½X
¯u¤ß·PÁ¨C¤@¦ìÄ@·N¤À¨É©Ò¾Ç¡B«ü¾É·s¤âªº¤H!

TOP

¦^´_ 23# sujane0701
Python µ´¹ï¬O­È±o¾Ç²ßªº»y¨¥¡A¸û¼öªù¡A®M¥ó¤]¦h¡C
°Ñ¦Ò VBALearner ªº code ¡A§ï¬° VBA ªº code À³¸Ó¤]¬O¯à¹F¨ì§Aªº»Ý¨Dªº¡G
  1. Sub ¬d¸ß()
  2.     Dim oXmlhttp: Set oXmlhttp = CreateObject("msxml2.xmlhttp")
  3.     Dim oHtml: Set oHtml = CreateObject("htmlfile")
  4.     Dim sUrl As String, sPost As String, sID As String
  5.     Dim ar, r, i, j
  6.    
  7.     With Sheets(1)
  8.         ar = .[a1].Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
  9.     End With
  10.     For r = 2 To UBound(ar)
  11.         sID = ar(r, 1)
  12.         With oXmlhttp
  13.             sUrl = "https://accs.tradevan.com.tw/accsw-bin/APACCS/userLoginAction.do?userid=GUEST&password=GUEST"
  14.             .Open "Get", sUrl, False
  15.             .send
  16.             oHtml.Body.innerhtml = .responsetext
  17.             sUrl = "https://accs.tradevan.com.tw/accsw-bin/APACCS/cImMergeQueryAction.do"
  18.             sPost = "mawb_no=" & sID & "&¬d¸ß=¬d¸ß"
  19.             sPost = oHtml.parentWindow.encodeURI(sPost)
  20.             .Open "Post", sUrl, False
  21.             .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  22.             .setRequestHeader "Content-Length", Len(sPost)
  23.             .send (sPost)
  24.             oHtml.Body.innerhtml = .responsetext
  25.             With oHtml.GetElementsByTagName("table")(4).Rows(1)
  26.                 sInfo = .Cells(.Cells.Length - 1).GetElementsByTagName("a")(0).href
  27.             End With
  28.             
  29.             sUrl = "https://accs.tradevan.com.tw/accsw-bin/APACCS/cImMergeListAction.do"
  30.             sPost = "mawb_no=" & sID & _
  31.                         "&voyage_flight_no=" & Split(Split(sInfo, "flight_no=")(1), "&")(0) & _
  32.                         "&flight_date=" & Split(Split(sInfo, "flight_date=")(1), "&")(0) & _
  33.                         "&est_arrival_date=" & Split(Split(sInfo, "est_arrival_date=")(1), "&")(0) & _
  34.                         "&qry_mawb_no=" & sID & _
  35.                         "&qry_sort=0"
  36.             sPost = oHtml.parentWindow.encodeURI(sPost)
  37.             .Open "Post", sUrl, False
  38.             .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  39.             .setRequestHeader "Content-Length", Len(sPost)
  40.             .send (sPost)
  41.             oHtml.Body.innerhtml = .responsetext
  42.             With oHtml.GetElementsByTagName("table")(4)
  43.                 For i = 0 To .Rows.Length - 1
  44.                     With .Rows(i)
  45.                         For j = 0 To .Cells.Length - 1
  46.                             Sheets(2).Cells((r - 2) * 12 + i + 1, j + 1).Value = .Cells(j).innertext
  47.                         Next
  48.                     End With
  49.                 Next
  50.             End With
  51.         End With
  52.     Next
  53. End Sub
½Æ»s¥N½X
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

¦^´_ 25# stillfish00

«õ¾a VBA±M®aµL»~
¦³ÃöVBAªºª¦Âε{¦¡¦ü¥G·¥¬°¤Ö¨£¡A´±°Ýfish¤j¬O¦b­þ¸Ì¾ÇVBAª¦ÂΪº»yªk©O?
¯u¤ß·PÁ¨C¤@¦ìÄ@·N¤À¨É©Ò¾Ç¡B«ü¾É·s¤âªº¤H!

TOP

¦^´_ 26# VBALearner
ºô¸ô¦Û¾Çªº¡A¹ï©¤½×¾Â¦³¤£¿ùªº¸ê®Æ
http://club.excelhome.net/thread-1303169-1-1.html
ªí¹F¤£²M¡BÃD·N¤£©ú½T¡B¨SªþÀɮ׮榡¡B¨S¦³°Q½×°ÝÃDªººA«×~~~~~~¥H¤W·R²ö¯à§U¡C

TOP

¦^´_ 27# stillfish00

·PÁ±z! §Ú¦³ªÅ¨Ó¬ã¨s¬ã¨s¡A¶¶«K½Æ²ßVBA¡APy¼g¤[¤F³£§Ñ°O«ç»ò¼gVBA¤F= ="
¯u¤ß·PÁ¨C¤@¦ìÄ@·N¤À¨É©Ò¾Ç¡B«ü¾É·s¤âªº¤H!

TOP

        ÀR«ä¦Û¦b : ¤H¥Í¤£¤@©w²y²y¬O¦n²y¡A¦ý¬O¦³¾ú½mªº±j¥´ªÌ¡AÀH®É³£¥i¥H´§´Î¡C
ªð¦^¦Cªí ¤W¤@¥DÃD