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

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

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

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

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

Q&A

解決済

1回答

1237閲覧

pythonでフィルマークスをスクレイピングしたい

Lia

総合スコア9

スクレイピング

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

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

0グッド

0クリップ

投稿2022/10/27 11:43

編集2022/10/28 10:25

前提

フィルマークス(レビューサイト)のスクレイピングをしたいです。

OSなどは以下に記載
Windows11
jupyter Notebook (pyrhon)

スクレイピングするURL
https://filmarks.com/movies/76158

取得したいものは
タイトル、上映日、上映時間、ジャンル、総合評価(4.1など)、目のマーク(鑑賞した人数)、プラスのマーク(お気に入りの数)
計7つです。

実現したいこと

上記7つを取得し、csvファイルに出力したいです。
欲を言えば、1だけでなくいくつもフィルマークスの映画のURLを取得しているので、そのURLをまとめたエクセルを渡してあげて(既に作成済み)、1つのURL(1作品)に対して7つの変数を取得し、それぞれcsvファイルを作成してくれるコードを書きたいのですが力不足です。
とにかく最低限は、7つを取得しcsvファイルに抽出することです!

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

大変恐縮なのですがフィルマークスの構造が複雑で自分には難しく、初心者なのでアドバイスをいただけたら幸いです。qiitaなどのネットで調べてみたのですがいまいちピンときたものがなく行き詰まっています。

①タイトルに関して
<span>のみ、という指定をしていないので下の<small>の部分も入っています。
title = player_infos = soup.find("h2", class_="p-content-detail__title")の変数をどのようにすれば<span>のみのタイトルを取得することができるのでしょうか。

②「上映時間」では「p-content-detail__other-info-title」が3つあり、その最後のところに記載されている構造となっています。3つめ、というのはどんな指定をすれば取得できるのでしょうか。

③ジャンルに関して
p-content-detail__genre-titleの下の「ul」の下の「li」に入っています。どのように階層をたどればいいのでしょうか。

④観た数、保存数
こちらもclassの名前が同じでしたのでどうやって分けるかが分かりませんでした。
<a rel="nofollow" href="/login">
<span class="c-content__count">110732</span></a>
という構造になっていて、ログインしなくても数値は見えますが、スクレイピングする際はログインするコードも書かなければ、情報を取得できないのでしょうか。出力結果に書いてある通り{{ viewingMarkCount }}となってしまいました。

以上、4つと、これをcsvファイルに渡すことを目指しております。
アドバイスのほどよろしくお願いいたします。

該当のソースコード

python

1import pandas as pd # data analysis 2import requests # get url 3from bs4 import BeautifulSoup 4 5URL = "https://filmarks.com/movies/76158" 6 7html = requests.get(URL) # HTMLを取ってくる 8soup = BeautifulSoup(html.content, "html.parser") # HTMLを解析する 9 10 11title = soup.find("h2", class_="p-content-detail__title").text 12day = soup.find("h3", class_="p-content-detail__other-info-title").text 13 14#classが同じ名前だから指定できない、3つめのclassが上映時間となっている 15time = soup.find("h3", class_="p-content-detail__other-info-title").text 16 17score = soup.find("div", class_="c-rating__score").text 18 19#これも2つ同じ名前 20#左側 21look = soup.find("span", class_="c-content__count").text 22#右側 23save = soup.find("span", class_="c-content__count").text 24 25 26print(title) 27print(zyouei) 28print(time) 29print(score) 30print(look) 31print(save)

出力結果

スパイダーマン:ファー・フロム・ホーム(2019年製作の映画)
上映日:2019年06月28日
上映日:2019年06月28日
4.1
{{ viewingMarkCount }}
{{ viewingMarkCount }}

またこちらのにも質問をしています。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12270197322

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

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

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

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

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

Lia

2022/10/28 09:16

ご指摘ありがとうございます。内容を追加いたしました。
guest

回答1

0

自己解決

結局手動でやりました。

投稿2022/11/09 00:27

Lia

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問