WordPress Post Scraper 视觉基础

问题描述 投票:0回答:1

我需要关注。我需要从我的 WordPress 博客中抓取帖子并在 VB 应用程序中显示它们。但新闻必须是新鲜的,当用户单击“刷新”时,它会从网站获取新内容。因此,从第一页发布帖子并链接到它。

有什么办法可以做到这一点吗?这可能吗?

wordpress vb.net web-scraping
1个回答
0
投票

这是很有可能的,我会给你三种可能的解决方案。

  1. 第一个解决方案是使用 Telerik 的(免费!)测试框架 http://www.telerik.com/teststudio/testing-framework。它旨在用于测试您的网站是否存在缺陷等,但它是一个出色的抓取工具。一旦您了解如何使用语法,这很可能是最快、最简单的解决方案,但它的开销也最大。它使用浏览器插件让您“控制”Mozilla Firefox、Google Chrome、Apple Safari 和 Microsoft Internet Explorer。这个的主要缺点是您必须在所有想要使用它的计算机上安装安装包。如果您只是构建一个简单的抓取工具来从您自己的博客获取数据,并且您只会在一台计算机上运行它,那么这可能是最好的方法。

  2. 我要提到的下一个刮刀叫做 Watin,你可以从 http://watin.org/ 获取它。与 Telerik 相比,我个人更喜欢这个,因为它只需要在您的项目中包含一些 dll,并且一旦部署,它就可以在另一台计算机上很好地工作,而无需安装任何特殊软件。不幸的是,也有一些警告。最大的问题是它自 2011 年以来就没有更新过,所以我假设该项目已经死了,尽管该网站仍然存在。由于缺乏更新,它官方仅支持 Internet Explorer 6、7、8、9 以及 FireFox 2 和 3(但我可以保证它在 Windows 7+8 上的 IE 10 + 11 中运行良好)。语法比 Teleriks 更奇怪,但它应该足够简单,可以满足您的需要。

  3. 我推荐的最后一个选项是使用 DotNet 内置的

    HttpWebRequest
    HttpWebResponse
    类并手动进行抓取。我承认我有时仍然会使用这种方法。它基本上只是带回某个 url 的源代码,您必须使用字符串操作(或正则表达式,如果您擅长的话)来提取您需要的信息。这个的优点是它的开销最少,因为它不需要额外的 dll 或安装即可工作,而且速度非常快。我将为您提供一个示例函数,我已经在许多项目中使用和重用该函数来从网络中提取数据:

    Private Function GetMethod(ByVal sPage As String) As String
        Dim req As HttpWebRequest
        Dim resp As HttpWebResponse
        Dim stw As StreamReader
        Dim sReturnString As String = ""
        Dim sUserAgent As String = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
    
        Try
            req = HttpWebRequest.Create(sPage)
            req.Method = "GET"
            req.AllowAutoRedirect = False
            req.UserAgent = sUserAgent
            req.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
            req.Headers.Add("Accept-Language", "en-us,en;q=0.5")
            req.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7")
            req.Headers.Add("Keep-Alive", "300")
            req.KeepAlive = True
    
            resp = req.GetResponse        ' Get the response from the server 
    
            If req.HaveResponse Then
                resp = req.GetResponse        ' Get the response from the server 
                stw = New StreamReader(resp.GetResponseStream)
                sReturnString = stw.ReadToEnd()    ' Save the source code of the url into a string
            Else
                MessageBox.Show("No response received from host " & sPage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
        Catch exc As WebException
            MessageBox.Show("Network Error: " & exc.Message.ToString & " Status Code: " & exc.Status.ToString & " from " & sPage, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    
        Return sReturnString
    End Function
    

关于

sUserAgent
变量的注释:您可以将其更改为您想要模拟的任何用户代理。在本例中,我使用的是 Mozilla Firefox 5,它显然非常旧,但我已经使用此功能多年,不需要更新它。

© www.soinside.com 2019 - 2024. All rights reserved.