Edited at

Go(goquery)でQiitaのスクレイピングライブラリをつくった

More than 3 years have passed since last update.

high5/go-qiita-explore

スクレイピングの対象は、特定のタグを対象にした最近ストックされた投稿新着投稿になる。

※Qiitaが用意している公開APIを利用すれば同等のことができ、安定もしているので、通常、そちらの利用をおすすめします。


使用例

取得したいtagとpage(省略可能,デフォルト1)を指定して使う。

最近ストックされた投稿(例.ruby)


package main

import (
"fmt"
"github.com/high5/go-qiita-explore"
"log"
)

func main() {
explore := explore.NewExplore()
articles, err := explore.GetStocks("Ruby")
if err != nil {
log.Fatal(err)
}
for index, article := range articles {
if index == 0 {
fmt.Println("------------------------------------------------------------------------------")
}
fmt.Printf("title: %s \n", article.Title)
fmt.Printf("url: %s \n", article.URL.String())
fmt.Printf("user: %s \n", article.UserName)
fmt.Printf("user_url: %s \n", article.UserURL.String())
fmt.Printf("stock: %d \n", article.StockCount)
fmt.Printf("created_time: %s \n", article.CreatedTime.Format("2006-01-02"))
for index, tag := range article.Tags {
tagNo := index + 1
fmt.Printf("tag%d: %s (http://qiita.com/tags/%s)\n", tagNo, tag, tag)
}
fmt.Println("------------------------------------------------------------------------------")
}
}

新着投稿(例.JavaScript)

package main

import (
"fmt"
"github.com/high5/go-qiita-explore"
"log"
)

func main() {
explore := explore.NewExplore()
articles, err := explore.GetItems("JavaScript", 1)
if err != nil {
log.Fatal(err)
}
for index, article := range articles {
if index == 0 {
fmt.Println("------------------------------------------------------------------------------")
}
fmt.Printf("title: %s \n", article.Title)
fmt.Printf("url: %s \n", article.URL.String())
fmt.Printf("user: %s \n", article.UserName)
fmt.Printf("user_url: %s \n", article.UserURL.String())
fmt.Printf("stock: %d \n", article.StockCount)
fmt.Printf("created_time: %s \n", article.CreatedTime.Format("2006-01-02"))
for index, tag := range article.Tags {
tagNo := index + 1
fmt.Printf("tag%d: %s (http://qiita.com/tags/%s)\n", tagNo, tag, tag)
}
fmt.Println("------------------------------------------------------------------------------")
}
}