Centar za edukaciju-BiH



#1 05.04.2022 12:43
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:VBA scraping
mozda znate kako bi skinuo viceve sa web stranice u excel?

web stranica: https://icentar.ba/icentar/showtopic.php?id=22

PreuzmiIzvorni kôd (Visual Basic):
  1. Sub test()
  2.    
  3. the_start:
  4.    
  5.     Set objIE = CreateObject("InternetExplorer.Application")
  6.     objIE.Top = 0
  7.     objIE.Left = 0
  8.     objIE.Width = 800
  9.     objIE.Height = 600
  10.     objIE.Visible = False 'We will see the window navigation
  11.    
  12.     On Error Resume Next
  13.     objIE.Navigate ("https://icentar.ba/icentar/showtopic.php?id=22")
  14.    
  15.     Do
  16.     DoEvents
  17.         If Err.Number <> 0 Then
  18.             objIE.Quit
  19.             Set objIE = Nothing
  20.             GoTo the_start:
  21.         End If
  22.     Loop Until objIE.ReadyState = 4
  23.    
  24.     MsgBox "webpage has loaded"
  25.    
  26.     Dim AllString As String
  27.    
  28.     Set Alllinks = objIE.Document.getElementsByTagName("a")
  29.     For Each Hyperlink In Alllinks
  30.         If InStr(Hyperlink.innerText, "Haso") > 0 Then
  31.             AllString = Hyperlink.innerText
  32.             Exit For
  33.         End If
  34.     Next
  35.    
  36.     MsgBox AllString
  37.    
  38. End Sub

zivot je moja domovina.
↑  ↓

#2 09.04.2022 10:48
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re:VBA scraping
Nece niko ni da proba.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function test()
  2.    
  3. the_start:
  4.    
  5.     Set objIE = CreateObject("InternetExplorer.Application")
  6.     objIE.Top = 0
  7.     objIE.Left = 0
  8.     objIE.Width = 800
  9.     objIE.Height = 600
  10.     objIE.Visible = False 'We will see the window navigation
  11.    
  12.     On Error Resume Next
  13.     objIE.Navigate ("https://icentar.ba/icentar/showtopic.php?id=22")
  14.    
  15.     Do
  16.     DoEvents
  17.         If Err.Number <> 0 Then
  18.             objIE.Quit
  19.             Set objIE = Nothing
  20.             GoTo the_start:
  21.         End If
  22.     Loop Until objIE.ReadyState = 4
  23.    
  24.    
  25.     Dim AllString As String
  26.    
  27.     Set Alllinks = objIE.Document.getElementsByTagName("div")
  28.     For Each Hyperlink In Alllinks
  29.        ime = Hyperlink.className
  30.         If ime = "bbody iefix_left" Then
  31.             AllString = Hyperlink.innerText
  32.              MsgBox AllString
  33.             MsgBox Hyperlink.Name
  34.              'Exit For
  35.        End If
  36.     Next
  37.    
  38. Set objIE = Nothing
  39. End Function

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 10.04.2022 14:02
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re:VBA scraping
Dobar dan.
Isprobavam ovo i funkcija radi kada ju pokrenem u VBA editoru. Za Access znam ali mi nije potpuno jasno kako se funkcija poziva kada se otvoru Excel sheet?
Pozdrav
↑  ↓

#4 12.04.2022 08:51
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:Re:VBA scraping
Citiraj pmiroslav:
Dobar dan.
Isprobavam ovo i funkcija radi kada ju pokrenem u VBA editoru. Za Access znam ali mi nije potpuno jasno kako se funkcija poziva kada se otvoru Excel sheet?

ja sam to napravio ovako:
u module1 dodao sam jos ovo:

Sub proba()
Call test
End Sub

zatim sam na List1 stavio tipku na ovaj nacin:


cijeli kod. Nakon sto se pokaze vic ako pritisnemo OK, pokaze sljedeci vic a ako kliknemo na cancel vrati nas na List1 tj, izade iz funkcije

PreuzmiIzvorni kôd (Visual Basic):
  1. Sub proba()
  2.         Call test
  3.     End Sub
  4.     Function test()
  5.         Dim odgovor
  6. the_start:
  7.        
  8.         Set objIE = CreateObject("InternetExplorer.Application")
  9.         objIE.Top = 0
  10.         objIE.Left = 0
  11.         objIE.Width = 800
  12.         objIE.Height = 600
  13.         objIE.Visible = False 'We will see the window navigation
  14.        
  15.         On Error Resume Next
  16.         objIE.Navigate ("https://icentar.ba/icentar/showtopic.php?id=22")
  17.        
  18.         Do
  19.         DoEvents
  20.             If Err.Number <> 0 Then
  21.                 objIE.Quit
  22.                 Set objIE = Nothing
  23.                 GoTo the_start:
  24.             End If
  25.         Loop Until objIE.ReadyState = 4
  26.        
  27.        
  28.         Dim AllString As String
  29.        
  30.         Set Alllinks = objIE.Document.getElementsByTagName("div")
  31.         For Each Hyperlink In Alllinks
  32.            ime = Hyperlink.className
  33.             If ime = "bbody iefix_left" Then
  34.                 AllString = Hyperlink.innerText
  35.                  
  36.                 odgovor = MsgBox(AllString, vbOKCancel)
  37.                 If odgovor = vbCancel Then Exit Function
  38.                
  39.             End If
  40.         Next
  41.        
  42.     Set objIE = Nothing
  43.     End Function

za svaku web stranicu drugacije treba prilagoditi kod jer ne sadrze sve tekst vica izmedu div, neke imaju u <a> ili <p>
Tako da ne postoji univerzalni kod za skidanje sadrzaja web stranice vec ga moramo rucno prilagoditi.
Treba sa firefox otvoriti web lokaciju a zatim izabrati u meniju firefoksa-vise alata-pokazi izvornu web stranicu i onda prouciti gdje se nalazi tekst koji zelimo skinuti i prilagoditi kod
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 12.04.2022 08:53 od strane Avko. ↑  ↓

#5 14.04.2022 00:28
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re:VBA scraping
funkcija se moze pozvati iz bilo koje celije kao i sve ostale gotove funkcije.
Mozes skinuti i cio sadrzaja ako nemas filtere u funkciji odnosno ako skidas od taga body.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (1):1

Sva vremena su GMT +01:00. Trenutno vrijeme: 7: 06 pm.