狠狠撸
Search
Submit Search
骋辞て?シュッと奥别产スクレイヒ?ンク?する
?
5 likes
?
8,500 views
Yuta Ohashi
Go(Un)Conference(Goあんこ)LT大会 2kg
Read less
Read more
1 of 30
Download now
Download to read offline
More Related Content
骋辞て?シュッと奥别产スクレイヒ?ンク?する
1.
Goでシュッと Webスクレイピングする Go(Un)Conference(Goあんこ)LT大会 2kg 2018/05/25 Yuta Ohashi
2.
2 blue_goheimochi blue-goheimochi はじめて2ヶ月
3.
3 もくじ ? モチベーション ? Webスクレイピングとは? ?
使ったパッケージ ? 静的サイトのスクレイピング ? 動的サイトのスクレイピング ? まとめ
4.
4 サンプルコード https://github.com/blue-goheimochi/practice-scraping-with-go
5.
5 モチベーション
6.
6 モチベーション ? 何か思いついた時にシュッとWebスクレイピングしたい ? 自分の中にシュッとやる方法が確立してなかった ?
PHP?Python?Node.js?Go? ? Goでやってみよう
7.
7 Webスクレイピングとは?
8.
8 Webスクレイピングとは? ? ウェブサイトから情報を抽出するコンピュータソフト ウェア技術のこと(Wikipedia調べ) ? HTML取得→DOM解析→保存→加工→何かしらで利用 ?
用法?容量を守って正しくスクレイピングする必要あり ? Twitterはスクレイピングを利用規約で明示的に禁止している ? 岡崎市中央図書館事件 ? Webスクレイピングの注意事項一覧 https://qiita.com/nezuq/items/c5e827e1827e7cb29011
9.
9 https://twitter.com/ja/tos
10.
10 使ったパッケージ
11.
11 使ったパッケージ goquery https://github.com/PuerkitoBio/goquery jQueryライクにDOMの指定ができるやーつ!
12.
12 使ったパッケージ 例)タイトルタグの中身を取得 doc, _ :=
goquery.NewDocument(url) doc.Find("title").Text() 例)クラス名を指定して取得 doc, _ := goquery.NewDocument(url) doc.Find(".hoge-list > li")
13.
13 使ったパッケージ doc.Find(".hoge-list > li
").Each(func(i int, s *goquery.Selection) { s.Find(“a > span”).Text() }) 例)取得した複数のliをループする jQueryでDOM操作をゴリゴリしたことがある 人にはきっと使いやすい ※goqueryの詳しい使い方はググる
14.
14 静的サイトのスクレイピング
15.
15 静的サイトのスクレイピング 対象のサイト 1 2 リクエスト HTMLレスポンス
16.
16 簡単!
17.
17 静的サイトのスクレイピング 簡単! ? ChromeのDeveloper Toolsで確認したままのDOM ?
素直に指定すれば要素が取得できる ? qoqueryだけでシュッとスクレイピングできる
18.
18 動的サイトのスクレイピング
19.
19 動的サイトのスクレイピング 対象のサイト 1 2 リクエスト HTMLレスポンス
20.
20 むずかしぃ???
21.
21 動的サイトのスクレイピング むずかしぃ??? ? ChromeのDeveloper Toolsで確認したままのDOM ではない??? ?
レンダリングが終わる前のHTMLが返ってくる ? ググるとSeleniumと組み合わせてってのが多い ? 面倒なことはしたくない???(したほうがいい
22.
22 そこで
23.
23 動的サイトのスクレイピング Scrapy + Splash ?
Scrapy ? Python製のクローリング?スクレイピングフレーム ワーク ? robots.txtを考慮してくれる(らしい) ? Splash ? Python製のJavascriptレンダリングサービス
24.
24 Scrapy + Splashの 環境構築面倒だよぉ
25.
25 動的サイトのスクレイピング Scrapy + SplashのDockerのコンテナがある ?
scrapinghub/splash ? 静的サイトをスクレイピングするのと同じ感じで できる ? 便利な世の中ですね
26.
26 動的サイトのスクレイピング 対象のサイト Scrapy + Splash 1 2 35 リクエスト リクエスト HTMLレスポンス4 レンダリング レンダリング後のHTMLレスポンス
27.
27 動的サイトのスクレイピング Scrapy + Splashのコンテナを起動 $
docker pull scrapinghub/splash $ docker run -d -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash Scrapyを経由してアクセスするURL http://localhost:8050/render.html?url=https://hogeho ge.com&timeout=10&wait=3 ※5023: telnet 8050: http 8051: https ※ Scrapy,Splashの詳しい内容?使い方はググる
28.
28 まとめ
29.
29 まとめ GoでシュッとWebスクレイピングするなら??? ? goqueryを使う ? Scrapy
+ Splashのコンテナを使う ? ルールを守ってスクレイピングする
30.
30 おわり
Download