Uloženie obrázka z web stránky   zodpovězená otázka

VB.NET

Dobrý večer.

Mohol by mi niekto poradiť, ako uložiť obrázok z web stránky, ak poznám jeho adresu (http://www...jpg)?

Vopred ďakujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkus toto:

WebBrowser.Document.Images(ind).GetAttribute("src")

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ahoj Tomáš!

Vďaka! Ale z toho čo si napísal mi nie je jasné, kde ten obrázok uloží.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se ti, ten kód není úplně co jsi chtěl, mohlo by pomoci toto:

Private Sub SavePic(ByVal elm As HtmlElement, ByVal dest as string)
  if not string.isnullorempty(elm.getattribute("src")) then
    try
      my.computer.network.downloadfile(elm.getattribute("src"), dest)
    catch ex as exception
      msgbox(ex.message)
    end try
  else
    msgbox("Neplatný element!")
  end if
End Sub

A vyvoláš jej tak, že si při navigaci ve webbrowseru uložíš .Document z webbrowseru do proměnné deklarované s WithEvents a vytvoříš si událost napojenou na klik do dokumentu, viz. můj snippet, víš o který jde.

    Private Sub doc_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Handles doc.Click ' můžeme obsluhovat některé události z doc
        SavePic(WebBrowser1.Document.GetElementFromPoint(new point(e.mousepos.x,e.mousepos.y), "C:/img.jpg")
    End Sub

Snad ti toto bude více nápomocno, ještě dodám že jsem kód tvořil z hlavy, protože nejsem na PC na kterém VS, takže omluv případné chyby.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem, skúsim, dám vedieť.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ospravedlňujem sa, ale nejako to neviem poskladať.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Což bude moje chyba, a omlouvám se ti za tu zmatečnost, tento kód, ověřený v 2008ce mi jde:

Public Class Form1
    Dim WithEvents doc As HtmlDocument

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        doc = WebBrowser1.Document
    End Sub

    Private Sub doc_Click(ByVal sender As Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Handles doc.Click
        Dim elm As HtmlElement = doc.GetElementFromPoint(e.ClientMousePosition)
        If Not String.IsNullOrEmpty(elm.GetAttribute("src")) Then
            Try
                Dim overw As Boolean = True
                If IO.File.Exists("c:/" & IO.Path.GetFileName(elm.GetAttribute("src"))) Then
                    overw = MsgBox("Přepsat?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes
                End If
                If overw = True Then
                    My.Computer.Network.DownloadFile(elm.GetAttribute("src"), "c:/" & IO.Path.GetFileName(elm.GetAttribute("src")), "", "", True, 100, overw)
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            Exit Sub
        End If
    End Sub
End Class
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem, Tomáš! Funguje! Nedával som : za c. Príjemný večer!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Len tak, keby sa dakto zaujímal. Kopíruje z obrázky z web stránok zobrazuje v PictureBox-e a ukladá obrázky. Vďaka Tomášovia ( Herceg a Hübelbauer). Ak mi pomôžete odstrániť chyby budem vďačný.

Imports System.Text.RegularExpressions
Imports System.Net

Public Class Form1
    Private startLine As New Regex("StartSelection:(.*)")
    Private endLine As New Regex("EndSelection:(.*)")
    Private sourceUrl As New Regex("SourceURL:(.*)")
    Private absUrl As New Regex("(http://|https://)[^/]*/")
    Private relUrl As New Regex("(http://|https://).*/")
    Private getImg As New Regex("<img[^<]*(/>|>)", RegexOptions.IgnoreCase)
    Private imgSrc As New Regex("src=""(.*)""", RegexOptions.IgnoreCase)
    Private remove As New Regex("src=""|""", RegexOptions.IgnoreCase)
    'Get the Start line 
    'Get the End line 
    'Get the Source line 
    'Get the absolution Url 
    'Get the relative Url 
    'Get the image tag 
    'Get the src attribue 
    'Remove unwanted strings 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'webBrowser1.Navigate("http://www.microsoft.com")
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim iDataObj As IDataObject = Clipboard.GetDataObject()
        If iDataObj.GetDataPresent(DataFormats.Html) Then
            Dim html As String = DirectCast(iDataObj.GetData(DataFormats.Html, True), String)
            Dim client As New System.Net.WebClient()
            Dim c As Integer = 1
            For Each s As String In retrieveImg(retrieveSelection(html), html)
                client.DownloadFile(s, "c:/" + c.ToString() + ".gif")
                'Download the images one by one 
                MsgBox(s)
                'vystavit HTTP požadavek
                Dim r As HttpWebResponse = HttpWebRequest.Create(s).GetResponse()
                'načíst obrázek ze streamu
                Me.PictureBox1.Image = Image.FromStream(r.GetResponseStream())
                'zavřít spojení se serverem
                r.Close()
                c += 1
            Next
        End If
    End Sub
    Private Function retrieveSelection(ByVal input As String) As String
        'Get the selected html 
        Dim startStr As String = startLine.Match(input).Value
        Dim endStr As String = endLine.Match(input).Value
        startStr = startStr.Substring(startStr.IndexOf(":") + 1)
        endStr = endStr.Substring(endStr.IndexOf(":") + 1)
        Dim start As Integer = Integer.Parse(startStr)
        Dim [end] As Integer = Integer.Parse(endStr)
        Return input.Substring(start, ([end] - start) - 1)
    End Function
    Private Function retrieveAbsUrl(ByVal input As String) As String
        Dim url As String = sourceUrl.Match(input).Value
        url = absUrl.Match(url).Value
        Return url
    End Function
    Private Function retrieveRelUrl(ByVal input As String) As String
        Dim url As String = sourceUrl.Match(input).Value
        url = relUrl.Match(url).Value
        Return url
    End Function
    Private Function retrieveImg(ByVal input As String, ByVal html As String) As String()
        Dim result As String() = New String(getImg.Matches(input).Count - 1) {}
        Dim i As Integer = 0
        For Each m As Match In getImg.Matches(input)
            Dim img As String = m.Value
            img = imgSrc.Match(img).Value
            img = remove.Replace(img, "")
            If img.StartsWith("/") Then
                'If it is absolute url 
                img = retrieveAbsUrl(html) + img
            ElseIf img.StartsWith("http") Then
                'img = img; 
                'If it is a complete url 
            Else
                'If it is relative url 
                img = retrieveRelUrl(html) + img
            End If
            result(i) = img
            i += 1
        Next
        Return result
    End Function
End Class

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback