Foros del Web » Programación para mayores de 30 ;) » .NET »

Extraer el codigo javascript de una web con Vb.NET

Estas en el tema de Extraer el codigo javascript de una web con Vb.NET en el foro de .NET en Foros del Web. Hola, primero que todo quisiera decirles que soy nuevo aqui y que estoy desesperado, veran, estoy haciendo una aplicacion de Windows Form en Vb.NET para ...
  #1 (permalink)  
Antiguo 08/01/2011, 09:09
 
Fecha de Ingreso: enero-2011
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Extraer el codigo javascript de una web con Vb.NET

Hola, primero que todo quisiera decirles que soy nuevo aqui y que estoy desesperado, veran, estoy haciendo una aplicacion de Windows Form en Vb.NET para extraer el codigo fuente de muchas webs (aprox. 43250) y guardarlas en una base de datos con su respectiva ID, la estructura de la url es algo como esto : http://laurl/cosa=numero
y debo recorrer todas las webs de esta manera: http://laurl/cosa=1, http://laurl/cosa=2, etc, lo que ocurre es que httpwebrequest y httpwebresponse no me guardan el codigo que esta entre etiquetas <script></script> y precisamente lo que esta ahi es lo que necesito, he intentado con un Webbrowser y con su Webbrowser1.documenttext colocando el codigo de insertar los datos a la base de datos en el evento webbrowser.documentcompleted y funciona, pero al ser muchas webs las que tengo que recorrer, lo hago con un bucle FOR y solo dispara el documentcompleted para el ultimo elemento, he intentado tambien colocar el codigo que inserta los datos en un SUB, y llamarlo con cada iteracion del FOR pero el documento, o queda en blanco o no sale completo, por lo que he estado usando un Threading.Thread.Sleep(20000) para darle tiempo a la pagina de cargar, pero ahora siempre que trato de ejecutar el for, la primera pagina a la que navega devuelve un documenttext = null y lo mismo con documentstream, podrian porfavor ayudarme, decirme como lo puedo hacer sin el webbrowser?
agrego mi codigo abajo:
Código:
Imports MySQLDriverCS
Imports Mysql_PHP.mysql_PHP
Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Net
Imports System.Web
Public Class Form1
    Dim con As MySQLConnection
    Dim com As MySQLCommand
    Dim comando As String
    Dim ya As Boolean = False
    Dim num As UInteger
    Dim body As String
    Dim nulls As UInt64 = 0
    Dim myreq As HttpWebRequest = HttpWebRequest.Create("http://wowus.info/parser.php")
    Dim myres As HttpWebResponse = myreq.GetResponse()
    Dim stream As Stream = myres.GetResponseStream()
    Dim reader As New StreamReader(stream)
    Dim arr As Array
    'Dim fs As New FileStream(Application.StartupPath & "/dump.sql", FileMode.Append, FileAccess.Write)
    'Dim sw As New StreamWriter(fs)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        arr = reader.ReadToEnd().Split(",")
        MsgBox("total: " & arr.Length)
        con = mysql_connect("localhost", "root", "sebas2112")
        mysql_select_db("dumpedpages", con)
    End Sub
    Public Sub insertar()
        If IsNothing(Me.browser.DocumentStream) Then
            Me.nulls += 1
            MsgBox(Me.nulls)
            Return
        End If
        Dim final As Stream = Me.browser.DocumentStream
        Dim finalreader As New StreamReader(final)
        Dim finalfinal As String = ""
        'MsgBox(finalreader.ReadToEnd())
        Dim regularex As String = Chr(34)
        Dim regular2 As String = "'"
        Dim regular3 As String = "}"
        Dim regular4 As String = "{"
        Dim regular5 As String = "\."
        Dim regular6 As String = "\\\\'"
        Dim reg As New Regex(regularex)
        Dim reg2 As New Regex(regular2)
        Dim reg3 As New Regex(regular3)
        Dim reg4 As New Regex(regular4)
        Dim reg5 As New Regex(regular5)
        Dim reg6 As New Regex(regular6)
        reg.Matches(finalreader.ReadToEnd())
        finalfinal = reg.Replace(finalreader.ReadToEnd(), "\""")
        finalfinal = reg2.Replace(finalfinal, "\'")
        finalfinal = reg3.Replace(finalfinal, "\}")
        finalfinal = reg4.Replace(finalfinal, "\{")
        finalfinal = reg5.Replace(finalfinal, "\.")
        finalfinal = reg6.Replace(finalfinal, "\'")
        Me.comando = "INSERT INTO data VALUES (" & num & ",'" & finalfinal & "');"
        mysql_query(Me.comando, con)
        ' MsgBox("done")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each Me.num In arr
            'MsgBox(sebas.ToString())
            Me.browser.Navigate("http://www.wowhead.com/npc=" & Me.num)
            Threading.Thread.Sleep(20000)
            insertar()
        Next num
        MsgBox("done")
    End Sub
End Class
el form2 solo contiene un richtextbox y el form 1 contiene solo un boton, los numeros los estoy obteniendo de otra web externa que los tiene todos separados por una coma (,) asi que hago un split y recorro con for each.
Desde ya, gracias

Etiquetas: extraer, javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:02.