【Python】BeautifulSoupでcontentやtextが取得できない
Pythonを使ってのスクレイピング
投資で、自分自身が見たいと思っていることなんかをPython使ってまとめられたら便利だなというところから。
そのため株のデータ取得などをやりたいと思いBeautifulSoupでのrequestをすることでスクレイピングしたいと思っていました。
ただ、最初からrequestでgetした内容を見ても全く中身(content、text)が取得できなかったので、メモ残します。
BeautifulSoupでcontentやtextが取得できないサイト
今回、取得できなかったサイトは、
https://stockcharts.com/
ここから必要なデータを取得したいと思いました。
と思いましたが、最初からつまづきました。
下記のようにやっても、何も取れません。
import requests
from bs4 import BeautifulSoup
url = "https://stockcharts.com/"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
print(soup)
ちなみにURLをhttps://www.yahoo.co.jp/だったり
https://finviz.com/に変えてみたら、バーっとcontent取れたので、
書き方が間違っているではなさそう。
requestsで返ってくるページ内容が自分がchromeなどで見ているのと異なる
いろいろ調べて見ると、
requestでダウンロードしたhtmlが、ブラウザを通して表示されるhtmlが違うようでした。
このサイトあたりが参考になりました。
【私が実施した解決方法】BeautifulSoupにてuser agentの設定
先に実施したコードを記載します。
import requests
from bs4 import BeautifulSoup
url = "https://stockcharts.com/"
header = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36"}
response = requests.get(url, headers=header)
soup = BeautifulSoup(response.content, "html.parser")
print(soup)
変更を加えたのは、下記の2点だけです。
headerという変数を作り、user-agentを設定
getの部分でheader(user-agent)を指定してあげる
これで一応contentが取得できました。
なお、今使っているブラウザのuser agentの確認は下記でできます。
↓にあるように、ブラウザのユーザーエージェントってやつをコピーする
終わり
※ちなみにですが、この内容を取得できたところで使いませんでした😇😇