2017-01-28 9 views
0

Я хочу получить внутренний текст сайта через код.Получить внутренний текст сайта без веб-браузера

Я уже могу получить его внутренний html с кодом ниже, но я не могу найти код, который получает внутренний текст URL без webbrowser.

Этот код получает текст с веб-сайта в webbrowser, но мне нужно то же самое, просто без веб-браузера.

Dim sourceString As String = WebBrowser1.Document.Body.InnerText 
+0

ли вы имеете в виду, что это открытие webrower, и вы не хотите использовать webbrosers (Internet Explorer)? –

+0

Нет, я хочу получить текст сайта (не html) через код, не используя webbrowser –

+0

Возможно, вы могли бы использовать веб-браузер, который также экспортирует компоненты в api? Если нет, вам придется использовать некоторую реализацию сокета и, скорее всего, также использовать openssl, как вещь, чтобы передать https. Тогда это просто запрос на получение, который вернет весь html. –

ответ

0

** Взято из ** Wolfwyrd

В этом вопросеHTTP GET in VB.NET

Try 
Dim fr As System.Net.HttpWebRequest 
Dim targetURI As New Uri("http://whatever.you.want.to.get/file.html")   

fr = DirectCast(HttpWebRequest.Create(targetURI), System.Net.HttpWebRequest) 
If (fr.GetResponse().ContentLength > 0) Then 
    Dim str As New System.IO.StreamReader(fr.GetResponse().GetResponseStream()) 
    Response.Write(str.ReadToEnd()) 
    str.Close(); 
End If 

Поймайте экс Как Ошибка System.Net.WebException »в доступе к ресурсу, обрабатывать его Завершить запрос

Вы получите Html, а также заголовки http. Не думайте, что это будет работать само по себе с https.

+0

Я уверен, что упоминал TEXT, а не html :) –

1

С HtmlAgilityPack ...

Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click 
    Dim doc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument 
    With New Net.WebClient 
     doc.LoadHtml(.DownloadString("https://example.com")) 
     .Dispose() 
    End With 

    Debug.Print(doc.DocumentNode.Name) 
    PrintChildNodes(doc.DocumentNode) 

    Debug.Print(doc.DocumentNode.Element("html").Element("body").InnerText) 
End Sub 

Sub PrintChildNodes(Node As HtmlAgilityPack.HtmlNode, Optional Indent As Integer = 1) 
    For Each Child As HtmlAgilityPack.HtmlNode In Node.ChildNodes 
     Debug.Print("{0}{1}", String.Empty.PadLeft(Indent, vbTab), Child.Name) 
     PrintChildNodes(Child, Indent + 1) 
    Next 
End Sub