从网页上获取文字(不是HTML源)

时间:2010-04-14 01:45:55

标签: c# .net vb.net

我如何将网页内容放入字符串?

与点击ctrl + A并复制并粘贴它是一回事。

有没有办法在没有'sendkeys'的情况下以编程方式执行此操作?

我根本不想查看html源代码,我只想复制网站上的文字

4 个答案:

答案 0 :(得分:2)

我已经为应用程序做了一些屏幕抓取,并发现这是非常宝贵的: https://github.com/MindTouch/SGMLReader

该页面上有一些示例代码,但我在这里添加了一些额外的内容,它将完全返回您想要的内容

Imports System.Xml
Imports System.IO
Imports System.Net
Imports System.Text

Function FromHtml(ByVal reader As TextReader) As XmlDocument
    '' setup SgmlReader   
    Dim sgmlReader As Sgml.SgmlReader = New Sgml.SgmlReader()
    sgmlReader.DocType = "HTML"
    sgmlReader.WhitespaceHandling = WhitespaceHandling.None
    sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower
    sgmlReader.InputStream = reader
    '' create document 
    Dim doc As XmlDocument = New XmlDocument()
    doc.PreserveWhitespace = True
    doc.XmlResolver = Nothing
    doc.Load(sgmlReader)
    Return doc
End Function

Function LoadWebText(ByVal URL As String) As String
    Dim objWebClient As New WebClient()
    Dim objUTF8 As New UTF8Encoding()

    Dim xml As New XmlDocument
    xml = FromHtml(New StringReader(objUTF8.GetString(objWebClient.DownloadData(URL))))

    Return xml.InnerText()

End Function

答案 1 :(得分:1)

以下是通过Microsoft的Internet控件加载yahoo.com并打印文本的一些代码。

在Visual Studio中创建一个新项目,转到“添加引用”页面,单击“COM”选项卡并添加“Microsoft Internet控件”。

然后将以下代码粘贴到函数中。

Dim MyBrowser As New SHDocVw.InternetExplorer

MyBrowser.Navigate("http://www.yahoo.com/")

Do Until MyBrowser.Busy = False

System.Threading.Thread.Sleep(100)

Loop

Debug.Print(MyBrowser.Document.body.innerText)

答案 2 :(得分:0)

如果您希望能够快速将所有内容复制到剪贴板,您可以使用运行javascript(bookmarklet)的书签,而不是创建带有URL的书签,您将包含以下内容:

javascript:void function(){document.addEventListener("copyText",function(t){t.preventDefault(),t.clipboardData%26%26t.clipboardData.setData("text/plain",document.body.innerText)}),document.execCommand("copyText")}();

答案 3 :(得分:-1)

是。看看这个。

http://www.searcharoo.net/