1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Herokuでスクレイピングしようとしてハマったこと

Posted at

初めに

Herokuでスクレイピングしてハマったことをまとめてみました。
記事ではGoとagoutiを使用していますが、Pythonとかにも当てはまると思います。

invalid session id  エラーが多発

下記エラーが発生

failed to retrieve page HTML: request unsuccessful: invalid session id
failed to retrieve page title: request unsuccessful: invalid session id 

対策

Chromeのオプションに--disable-gpu--disable-dev-shm-usageを指定したら解消しました。

options := agouti.ChromeOptions(
	"args", []string{
		"--headless",
		"--disable-gpu",
		"--disable-dev-shm-usage",
	})
driver := agouti.ChromeDriver(options)

--disable-gpu

今のところですが、必要です。--disable-gpu フラグはいくつかのバグを回避するための暫定的な手段です。将来の Chrome のバージョンでは必要なくなるでしょう。詳しくは https://crbug.com/546953#c152 と https://crbug.com/695212 をご覧ください。

必須らしいです。

--disable-dev-shm-usage

メモリが少ない場合、メモリ不足でクラッシュする場合があります。
このオプションを指定することにより回避することができます。
ちなみにHerokuのプランFree dynoはメモリが512MBです。

空のHTMLが返ってくる

<html><head></head><body></body></html>

スクレイピング先のサイト側で弾かれている可能性が大

海外IPアドレスをブロック対象にしているサイトが多々あります。
ちなみにHerokuのFreeプランでは海外リージョンしか選べず、海外IPアドレスになります。
代わりに国内VPS等を使用するか、HerokuのPrivate SpaceでTokyoリージョンを選べるので回避できるかもしれません。

参考文献

https://qiita.com/yoshi10321/items/8b7e6ed2c2c15c3344c6
https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?