質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2296閲覧

BeautifulSoupでHTTP Error 403 Forbiddenの情報を取りたい(Webスクレイピング)

Takumi.Saito

総合スコア2

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/12/07 11:25

前提・実現したいこと

BeautifulSoupをつかって下記URLの価格情報をとろうとしていますが、
HTMLのコードないに価格やホームページの情報が出てきません。
URL:https://www.bhphotovideo.com/c/product/1515337-REG/panasonic_aw_ue4kg_compact_4k_ptz_hdmi.html
URL:https://www.videoplusfrance.com/4094022-panasonic-aw-ue4kg-camera-ptz-4k-grand-angle-noire.html

どうすれば価格を抽出できますか?BeautifulSoupの使い方として.findや.select_oneなどの使い方わかっているつもりですが、
対象のDiv classがみつからなくて困っています。。。

発生している問題・エラーメッセージ

<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="utf-8"/> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <meta content="IE=Edge,chrome=1" http-equiv="X-UA-Compatible"/> <meta content="noindex, nofollow" name="robots"/> <meta content="width=device-width,initial-scale=1" name="viewport"/> <title> Just a moment... </title> <style type="text/css"> html, body {width: 100%; height: 100%; margin: 0; padding: 0;} body {background-color: #ffffff; color: #000000; font-family:-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, "Helvetica Neue",Arial, sans-serif; font-size: 16px; line-height: 1.7em;-webkit-font-smoothing: antialiased;} h1 { text-align: center; font-weight:700; margin: 16px 0; font-size: 32px; color:#000000; line-height: 1.25;} p {font-size: 20px; font-weight: 400; margin: 8px 0;} p, .attribution, {text-align: center;} #spinner {margin: 0 auto 30px auto; display: block;} .attribution {margin-top: 32px;} @keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} } @-webkit-keyframes fader { 0% {opacity: 0.2;} 50% {opacity: 1.0;} 100% {opacity: 0.2;} } #cf-bubbles > .bubbles { animation: fader 1.6s infinite;} #cf-bubbles > .bubbles:nth-child(2) { animation-delay: .2s;} #cf-bubbles > .bubbles:nth-child(3) { animation-delay: .4s;} .bubbles { background-color: #f58220; width:20px; height: 20px; margin:2px; border-radius:100%; display:inline-block; } a { color: #2c7cb0; text-decoration: none; -moz-transition: color 0.15s ease; -o-transition: color 0.15s ease; -webkit-transition: color 0.15s ease; transition: color 0.15s ease; } a:hover{color: #f4a15d} .attribution{font-size: 16px; line-height: 1.5;} .ray_id{display: block; margin-top: 8px;} #cf-wrapper #challenge-form { padding-top:25px; padding-bottom:25px; } #cf-hcaptcha-container { text-align:center;} #cf-hcaptcha-container iframe { display: inline-block;} </style> <meta content="35" http-equiv="refresh"/> <script type="text/javascript">

該当のソースコード

from bs4 import BeautifulSoup import requests url = "https://www.bhphotovideo.com/c/product/1515337-REG/panasonic_aw_ue4kg_compact_4k_ptz_hdmi.html" dummy_user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0' response = requests.get(url, headers={"User-Agent": dummy_user_agent}) soup = BeautifulSoup(response.text, 'html.parser') html = soup.prettify() f = open('prettify.html', 'w', encoding='UTF-8') f.write(html) f.close() print(html)

試したこと

元々WEBスクレイピングをやろうとして「HTTP Error 403 Forbidden」が出て回避しようと上記のやり方で試したがうまくいかずで詰まっています。

補足情報(FW/ツールのバージョンなど)

Jupyter lab PYTHON

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTMLのコードないに価格やホームページの情報が出てきません。

HTMLに無いものは取得できないので無理です。

ブラウザで見ると有るのに、requestsで取得すると無い理由は、2つあります。
1.iframeの中に目的のノードがある
⇒ そのURLを調べてrequestsで取得する
2.JavaScriptで後から追加している
⇒ 「Selenium+ブラウザ」等JavaScriptが動くツールを使う

投稿2021/12/07 11:52

編集2021/12/07 11:53
otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takumi.Saito

2021/12/08 01:35

ありがとうございます! 1./2.の場合はPythonで取得する方法はないでしょうか??
otn

2021/12/08 03:11 編集

どちらもPython想定の話です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問