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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

786閲覧

webサイトのスクレイピング

hikari.13

総合スコア7

スクレイピング

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2021/08/18 07:31

Python3を学習中の初学者です。
こちらのwebサイトの各section classの<a href>のURLを取得しようとしていたのですが、一つしかURLを取得出来ません。
1ページ132件あるため、1ページ分の取得方法があればご教授いただけると幸いです。

!pip install selenium from selenium import webdriver from time import sleep import pandas as pd import re import csv browesr=webdriver.Chrome()#chromedriver.exe url="https://www.mercari.com/jp/search/?sort_order=&keyword=%E3%83%91%E3%83%A9%E3%83%96%E3%83%BC%E3%83%84&category_root=2&category_child=33&category_grand_child%5B349%5D=1&brand_name=&brand_id=&size_group=2&size_id%5B135%5D=1&size_id%5B136%5D=1&price_min=&price_max=&item_condition_id%5B1%5D=1&item_condition_id%5B2%5D=1&item_condition_id%5B3%5D=1&status_on_sale=1" browesr.get(url) ie=browesr.find_elements_by_class_name("items-box") for elsem in ie: elem_url=[] #elsem elems =elsem.find_elements_by_tag_name("a") for elem in elems: elem_url.append(elem.get_attribute("href")) print(elem_url) #実行結果 ['https://www.mercari.com/jp/items/m57414375460/']

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

Pythonはインデントでコードブロックを表現します。
インデントが終わったところで for で繰り返す範囲が切れてしまうため、次のような意図になってしまいます。

python

1ie=browesr.find_elements_by_class_name("items-box") 2 3for elsem in ie: 4 elem_url=[] #elsem 5 6# ie に対する繰り返しはここで終了してしまい、 elsem の値は ie の最後の値となる 7 8elems =elsem.find_elements_by_tag_name("a") 9 10for elem in elems: 11 elem_url.append(elem.get_attribute("href")) # <- 最後の items-box の要素だけ URL を取得

おそらくやりたかったことはこういうことではないでしょうか?

python

1items_box_elements = browesr.find_elements_by_class_name("items-box") 2 3elem_urls=[] # 初期化は for の外部で行わないと、毎回初期化されてしまう 4 5for items_box_element in items_box_elements: 6 7 anchors = items_box_element.find_elements_by_tag_name("a") 8 9 for anchor in anchors: 10 elem_urls.append(anchor.get_attribute("href")) 11 12print(elem_url)

変数名も具体的に中身を表現するものにしましょう。
多少長くても他とかぶったりせず意味が理解できる方が間違いにくいです。

投稿2021/08/18 08:09

mather

総合スコア6753

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

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

hikari.13

2021/08/18 11:11

解決いたしました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問