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

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

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

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

Beautiful Soup

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

Python

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

Q&A

解決済

1回答

760閲覧

スクレイピングで特定の要素を取得したい。

HearthXml

総合スコア51

スクレイピング

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

Beautiful Soup

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

Python

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

0グッド

0クリップ

投稿2020/06/29 02:54

編集2020/06/29 02:59

要件
スクレイピングしたいもの正解と書かれている要素を取得したいです。
正解<div class="test1">の最初のpタグにあります。

現状
現状スクレイピングしたいもの<div class="test1">までしか取得できません。

開発環境
Python 3.7.3

スクレイピングしたいもの

<div class="test1"> <p>正解</p> <p>不正解</p> </div> <div class="test2"> <p>不正解</p> <p>不正解</p> </div>

自分で書いたコード

import requests import re from bs4 import BeautifulSoup def scraping(url): r = requests.get(url) data = BeautifulSoup(r.text, 'html.parser') article = data.select("test1") return article url = "スクレイピングしたいもののURL" print(scraping(url))

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

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

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

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

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

jeanbiego

2020/06/29 02:57

正解と不正解を見分ける要素はどこにありますか。 ・pタグ内に特定の文字列(正解)が在る ・test1の1個目だけ正解 ・その他
HearthXml

2020/06/29 03:00 編集

test1の1個目だけ正解が条件です ご指摘ありがとうございます。修正しました。
guest

回答1

0

ベストアンサー

以下でどうでしょう。selectはlistで返ってきてしまうので、findを使いました。
1個目が動作例、2個目が質問文と同じような形です。

python3

1from bs4 import BeautifulSoup 2 3r = """ 4<div class="test1"> 5 <p>正解</p> 6 <p>不正解</p> 7</div> 8<div class="test2"> 9 <p>不正解</p> 10 <p>不正解</p> 11</div> 12""" 13data = BeautifulSoup(r, 'html.parser') 14article = data.find("div",class_="test1") 15print(article) 16""" 17<div class="test1"> 18<p>正解</p> 19<p>不正解</p> 20</div> 21""" 22print(article.find("p")) 23""" 24<p>正解</p> 25""" 26print(article.find("p").get_text()) 27""" 28正解 29"""

python3

1import requests 2import re 3from bs4 import BeautifulSoup 4 5def scraping(url): 6 r = requests.get(url) 7 data = BeautifulSoup(r.text, 'html.parser') 8 article = data.find("div",class_="test1") 9 first_p = article.find("p").get_text() 10 return first_p 11 12url = "スクレイピングしたいもののURL" 13print(scraping(url))

投稿2020/06/29 03:39

jeanbiego

総合スコア3966

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

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

HearthXml

2020/07/02 15:40

アドバイスをもとに無事実装できました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問