# 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

だいぶ速くなりました


Last Updated: 2021/2/28 9:04:39