.netでYourFileHostのスクラッピングサイトを作る1

最終成果物はYourFileHostへのURLが列挙されたHTMLを作成すること。
WebサーバはApacheでもIISでもよし。静的なコンテンツを動的に作成する。
DBはMSDE。クローラとかはVB.netでFormアプリとして作成。

  • Googleブログ検索からYourFileHostへのリンクが張られているサイトを検索して、それをRSS(1)として受け取る。
  • (1)のURLにアクセスしてYourFileHostへのリンクが張られていて、かつ女優名にヒットする場合はそのページにあるRSSを取得してDBにぶっこむ(2)
  • (2)のRSSを定期監視して新しいエントリが増えたらそいつをスクラッピングサイトのエントリに追加する

てな感じで、適当に作れるんじゃないかと思う。しばしこれを作ってみようかと思う。

まずは最初のGoogleブログ検索から検索結果を取得するクラス

Imports System.Text.RegularExpressions
Imports Rss
''' <summary>
''' Googleブログ検索で検索結果を返すクラス
''' </summary>
''' <remarks></remarks>
Public Class ModGoogleBlogSearch

    Private m_rssFeed As List(Of RssItem)


    Public Property Rss() As List(Of RssItem)
        Get
            Return m_rssFeed
        End Get
        Set(ByVal value As List(Of RssItem))
            m_rssFeed = value
        End Set
    End Property


    Private Sub New()

    End Sub
    ''' <summary>
    ''' 対象のURLに含まれるRSSのURLを取得します。
    ''' </summary>
    ''' <param name="searchWord"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function Read(ByVal searchWord As String, ByVal resultCount As Integer) As ModGoogleBlogSearch
        Dim instance As New ModGoogleBlogSearch
        instance.Rss = GetRss(searchWord, resultCount)
        Return instance
    End Function

    Private Shared Function GetRss(ByVal searchWord As String, ByVal resultCount As Integer) As List(Of Rss.RssItem)

        Dim url As String = "http://blogsearch.google.co.jp/blogsearch_feeds?hl=ja&q=[word]&lr=lang_ja&ie=utf-8&num=[num]&output=rss"
        url = url.Replace("[word]", Web.HttpUtility.UrlEncode(searchWord)).Replace("[num]", resultCount.ToString)

        Dim feed As RssFeed = RssFeed.Read(url)
        Dim list As New List(Of RssItem)
        If feed.Channels.Count > 0 Then

            For i As Integer = 0 To feed.Channels(0).Items.Count - 1
                list.Add(feed.Channels(0).Items(i))
            Next
        End If

        Return list
    End Function
End Class