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:
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.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
Desde ya, gracias