Forum

vb.net HTML'den TAB...
 
Bildirimler
Hepsini Temizle

vb.net HTML'den TABLE okumak

5 Yazılar
2 Üyeler
0 Reactions
1,058 Görüntüleme
(@nailisler)
Gönderiler: 152
Estimable Member
Konu başlatıcı
 

Herkese merhaba,

VB.net üzerinden Internetexplorer.application kullanarak bir web sayfasında ki tabloyu programın içerisine yazdırmak istiyorum.
Program düzgün çalışıyor fakat kez sayfa içeriğini okutmak istediğimde hata veriyor. Bir türlü neden olduğunu bulamadım destek olabilir misiniz?

Calistirdigim kod :

Dim oIE As Object
oIE = CreateObject("InternetExplorer.application")
oIE.Navigate("https://www.tttxxxyyy.com/tablolar/2018_cikti.html")
oIE.Visible = True

Do While oIE.Busy Or oIE.ReadyState <> 4
            Application.DoEvents()
Loop

RichTextBox1.Clear()

If (oIE.Document IsNot Nothing) Then
      Dim yenidoc As mshtml.IHTMLDocument = oIE.document
      Dim htmlDocument As mshtml.IHTMLDocument2 = yenidoc
      Dim allElements As mshtml.IHTMLElementCollection = htmlDocument.body.all
      Dim allInputs As mshtml.IHTMLElementCollection = allElements.tags("table")
      Dim varTable As HTMLTable
      Dim varRow As IHTMLTableRow
      For Each varTable In allInputs
          For Each varRow In varTable.rows
              RichTextBox1.AppendText(varRow.cells(1).innertext.ToString & Environment.NewLine)
          Next varRow
      Next varTable
Else
      MsgBox("Hata oie.document")
End If


 

butona 1 kez basmamda sonuçları richtextbox1 atmakta fakat 2. Kez bastığımda şu hatayı vermekte,

System.NotSupportedException
  HResult=0x800A01B6
  İleti=HRESULT özel durum döndürdü: 0x800A01B6
  Kaynak=Microsoft.VisualBasic
 

 
Gönderildi : 03/08/2018 18:06

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

nesneyi dispose yada close etmeyi dene yada BP ile incele , nerde takılıyor , XML yada dbden okumanızı tavsiye ederim.

 
Gönderildi : 03/08/2018 23:18

(@nailisler)
Gönderiler: 152
Estimable Member
Konu başlatıcı
 

Cevap için teşekkürler Birol bey fakat dispose yaptığımda şu şekle dönüştü,

oIE = CreateObject("InternetExplorer.application")
oIE.Navigate("https://www.sssxxxrttt.com/bbbb.html")
oIE.Visible = True
        Do While oIE.Busy Or oIE.ReadyState <> 4
            Application.DoEvents()
        Loop

        RichTextBox1.Clear()

        If (oIE.Document IsNot Nothing) Then
            Dim yenidoc As mshtml.IHTMLDocument = oIE.document
            Dim htmlDocument As mshtml.IHTMLDocument2 = yenidoc
            Dim allElements As mshtml.IHTMLElementCollection = htmlDocument.body.all
            Dim allInputs As mshtml.IHTMLElementCollection = allElements.tags("table")

            Dim varTable As HTMLTable
            Dim varRow As IHTMLTableRow
            For Each varTable In allInputs
                For Each varRow In varTable.rows
                    RichTextBox1.AppendText(varRow.cells(1).innertext.ToString & Environment.NewLine)
                Next varRow
            Next varTable
            htmlDocument.close()

        Else
            MsgBox("Hata oie.document")
        End If

 

Bu şekilde butona ilk bastığımda hatasız sutunu ekrana aliyor 2. kez bastığımda yine aynı hatayı verdi.
BP dediğiniz tam nedir bilemiyorum biraz daha detayli bbilgi verme şansınız varmıdır bu yazılım konusunda bilgim çok giriş düzeyinde.

 

Bu arada sadece html ciktisi alabiliyorum xmll veya db gibi şansım maalesef yok 🙁

 
Gönderildi : 04/08/2018 16:12

(@nailisler)
Gönderiler: 152
Estimable Member
Konu başlatıcı
 

Verdiği tam hata ;

System.NotSupportedException
  HResult=0x800A01B6
  İleti=HRESULT özel durum döndürdü: 0x800A01B6
  Kaynak=Microsoft.VisualBasic
  StackTrace:
   konum Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
   konum Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
   konum rapor.Form1.ParseTable() C:\xxxxxxxxxxxxxxx\Form1.vb içinde: 242. satır
   konum rapor.Form1.Button6_Click(Object sender, EventArgs e) C:\xxxxxxxxxxxx\Form1.vb içinde: 220. satır
   konum System.Windows.Forms.Control.OnClick(EventArgs e)
   konum System.Windows.Forms.Button.OnClick(EventArgs e)
   konum System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   konum System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   konum System.Windows.Forms.Control.WndProc(Message& m)
   konum System.Windows.Forms.ButtonBase.WndProc(Message& m)
   konum System.Windows.Forms.Button.WndProc(Message& m)
   konum System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   konum System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   konum System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   konum System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   konum System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   konum System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   konum System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   konum Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
   konum Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
   konum Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
   konum rapor.My.MyApplication.Main(String[] Args)  içinde: 81. satır

 
Gönderildi : 04/08/2018 18:08

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

Break POINT ( hata yakalama ) 

 
Gönderildi : 04/08/2018 18:56

Paylaş: