やりたいこと
- 現在Go言語を用いてスクレイピングをしたいと考えております。(Netflixの動画の閲覧履歴)
- しかしスクレイピングしたい画面が,ログインを行なった後の画面のため一度ログインを行ってからスクレイピングをする必要があります。
方針
- 具体的にはcookieをheaderに入れることでログインを省略したいと考えており、cookieの値を受け取ることはできたのですがheaderに埋め込んでgetリクエストを行うことができません。
- というかそもそもこの方針が合っているのかすらわかりません。
失敗例
- getでhtmlファイルのデータを受け取ろうとするとログイン画面のものを受け取ってしまいます。本来であればここでログイン後の画面が欲しいです。
該当のソースコード
go
1func GetCookieHandler(webPage string) []*http.Cookie { 2 3 jar, err := cookiejar.New(nil) 4 if err != nil { 5 log.Printf("クッキーの取得に失敗しました: %s", err) 6 } 7 8 client := &http.Client{Jar: jar} 9 res, err := client.Get(webPage) 10 11 if err != nil { 12 log.Printf("サイトへの接続に失敗しました: %s", err) 13 } 14 set_cookie_url, err := url.Parse(webPage) 15 if err != nil { 16 log.Printf("クッキーの取得に失敗しました: %s", err) 17 } 18 cookies := jar.Cookies(set_cookie_url) 19 20 defer res.Body.Close() 21 22 return cookies 23} 24 25// メイン 26func main() { 27 webPage := ネトフリの履歴のurl 28 cookies := GetCookieHandler(webPage) 29 http.HandleFunc(webPage, func(w http.ResponseWriter, 30 r *http.Request) { 31 for _, cok := range cookies { 32 http.SetCookie(w, cok) 33 } 34 }) 35 36 res, err := http.Get(webPage) 37 if err != nil { 38 log.Printf("htmlの取得に失敗しました: %s", err) 39 } 40 defer res.Body.Close() 41 42 //ここからスクレイピング 43 doc, _ := goquery.NewDocumentFromReader(res.Body) 44 fmt.Println(doc) 45 doc.Find(".login-signup-now").Each(func(i int, s *goquery.Selection) { 46 fmt.Println(s.Text()) 47 }) 48} 49
どうか解決策を教えていただけると幸いです。

下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/11/04 02:05
2022/11/04 03:59
2022/11/04 11:40
2022/11/04 11:42
2022/11/04 13:59