Hirdetés
Hirdetés
Talpon vagyunk, köszönjük a sok biztatást! Ha segíteni szeretnél, boldogan ajánljuk Előfizetéseinket!
Új hozzászólás Aktív témák
-
válasz
martonx #1522 üzenetére
Lényeg, hogy működik.
Köszönöm a segítséget, sokat jelentettLenne még egy kérdésem.
A program rendesen működik, ha olyan tartalmat töltök le amihez nem kell bejelentkezni az oldalra. Ha olyan mappát nyitok meg amihez be kell jelentkezni, akkor ugye azt csak a bejelentkezés után tehetem meg. Ezzel nincs is semmi gond, teljesen ugyan olyan felületű oldalra visz, még a gombok inputjai sem változnak, viszont időtúllépéssel dob egy hibát.
Ha csak a webbrowser ablakba töltöm le akkor simán letölti, de ha ráengedném a "ciklust" akkor dobja a hibát. Valami ötlet erre? -
válasz
martonx #1518 üzenetére
Köszönöm a segítséget, ez nagyon korrekt válasz volt.
Ezt a verziót választottam:
Dim mettől As Integer = TextBox4.Text
Dim meddig As Integer = TextBox2.Text
Dim i As Integer
Dim a As String
For i = mettől To meddig
a = i
Dim link As String = WebBrowser1.Document.GetElementById("save").GetAttribute("href")
TextBox1.Text = ("https://familysearch.org" + link)
Dim sourceURL = TextBox1.Text
Dim filedir = ("C:\" + a + ".jpg")
WebBrowser1.Document.GetElementById("next").InvokeMember("click")
My.Computer.Network.DownloadFile(sourceURL, filedir)
NextDe nem várja meg, hogy letöltsön a kép, és már megy is tovább a for ciklus.
-
martonx
veterán
válasz
Des1gnR #1517 üzenetére
Webclient-tel kétféleképpen tudsz letölteni. Aszinkron módon, azaz elindul a letöltés, de a kódod fut tovább, nem várja meg, hogy mi lett a letöltés eredménye. Ez a DownloadFileAsync.
Vagy szinkron módon, azaz elindul a letöltés, a kód megvárja míg letöltődik, és csak ezután fut tovább. Ez a sima DownloadFile.
Remélem érthető a különbség.
Emellett a létező legegyszerűbb letöltési lehetőség a My.Computer.Network.DownloadFile használata.
Sőt letölteni lehet a webhttprequest-tel is. A lehetőségek tárháza szinte végtelen.
Esetedben javaslom a szinkron letöltést, mert így a legegyszerűbb sorba mindent letölteni, és ha jól értem nem több száz megás cuccokat töltesz le.
De ha már aszinkron, azért nem működik a DownloadProgressChanged eseményed, mert ehhez a WebClient-edhez előbb hozzá kell kapcsolnod ezt az eseményt. Ezt az AddHandlerrel tudod megtenni. -
válasz
martonx #1516 üzenetére
Ezt a szinkron-aszinkron dolgot nem teljesen értem.
Erről az oldalról töltenék le: https://familysearch.org/pal:/MM9.3.1/TH-1951-20648-29594-35?cc=1452460&wc=12890478És itt a teljes forráskód:
Imports System.Net
Public Class Form1
Private WithEvents download As WebClient
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim download As New WebClient
download = New WebClient
Dim i As Integer
Dim a As String
'For i = 1 To 3
a = i
Dim link As String = WebBrowser1.Document.GetElementById("save").GetAttribute("href")
TextBox1.Text = ("https://familysearch.org" + link)
Dim sourceURL = TextBox1.Text
Dim filedir = ("C:\" + a + ".jpg")
ProgressBar1.Value = 0
ProgressBar1.Maximum = 100
Try
download.DownloadFileAsync(New Uri(sourceURL), (filedir))
Catch ex As Exception
MsgBox("Failed" + ErrorToString(), MsgBoxStyle.Critical)
End Try
WebBrowser1.Document.GetElementById("next").InvokeMember("click")
' Next
End Sub
Private Sub download_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
End ClassEz még változni fog itt-ott annyiban, hogy lehessen mappát választani és lehessen megadni más url-t is, de most csak az a lényeg hogy működjön
-
válasz
Des1gnR #1514 üzenetére
Jah azt még jelezném, hogy ez nem akar működni:
Private Sub download_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles download.DownloadProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
Ezen kívül más megoldás lehetséges? -
Sziasztok!
Egy olyan programot készítek ami egy weboldalról tölt le egy képet, majd ugrik a következőre és letölti azt is és így tovább
Így néz ki a kódrész ami a fájlt letölti:
Try
download.DownloadFileAsync(New Uri(sourceURL), (filedir))
Catch ex As Exception
MsgBox("Failed" + ErrorToString(), MsgBoxStyle.Critical)
End TryAzt szeretném megcsinálni, hogy csak akkor ugorjon át a következő képre, ha már letöltötte az aktuálisat. Mivel vizsgáljam ezt?
Válaszotokat előre is köszönöm.
Új hozzászólás Aktív témák
- Dell 19.5V 9.23A 7.4x5.0mm 180W gyári adapter (HA180PM180)
- Gamer PC - Ryzen 7 5700X / RTX 5060 / A520M / 16GB vagy 32GB RAM / 256GB + 1TB M.2 SSD / 650W
- HP ELITEBOOK 855 G8 Ryzen 3 5400U 16gb ram 256ssd FHD IPS Garancia
- Endorfy Solum Voice mikrofon és állvány szett
- Audio Research VTM 120 Special Edition 2x110W , végfok
- Apple iPhone 14 Pro / Gyárifüggetlen / 128GB / 12Hó Garancia / 88% akku
- Dell G15 5520 i7-12700H 14magos! RTX 3060 16GB RAM 512GB SSD FHD 120Hz Gar.: 2026
- Xbox Game Pass Ultimate kedvező áron, egyenesen a Microsoft-tól! - AUTOMATA BOLT
- BESZÁMÍTÁS! ASUS TUF A620M R5 7600X 32GB DDR5 1TB SSD RX 6700 XT 12GB ZALMAN I3 NEO A-Data 750W
- PS Plus előfizetések
Állásajánlatok
Cég: FOTC
Város: Budapest