# soup で Beautiful Soup っぽく Go でスクレイピング
前回のお話で RPi model B+ で Beautifl Soup での scraping が遅かったので、Nuitka でコンパイルしてみたんだけど全然速くなりませんでした
チューニングの方法がなにかあるのかもしれませんが、てっとりばやく Go で書き直してみることにしました
Go だと goquery とかがポピュラーで、JQuery っぽく使えるのですが、Beautiful Soup っぽく使える soup (opens new window) をつかってこんなかんじ (opens new window)で書いてみました
比較のために python のコードと go のコードを並べてみました、にてますね
import requests
from bs4 import BeautifulSoup
res = requests.get('https://golang.org/dl/')
soup = BeautifulSoup(res.text, 'html.parser')
version = soup.find('div', class_='toggleVisible')['id']
print(version)
package main
import (
"fmt"
"os"
"github.com/anaskhan96/soup"
)
func main() {
resp, err := soup.Get("https://golang.org/dl/")
if err != nil {
os.Exit(1)
}
doc := soup.HTMLParse(resp)
version := doc.Find("div", "class", "toggleVisible").Attrs()["id"]
fmt.Println(version)
}
コンパイルして実行してみると
pi@raspberrypi:~/gc_setups/golang $ time ./go_latest_version
go1.14.3
real 0m6.914s
user 0m2.808s
sys 0m0.430s
だいぶ速くなりました