🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Python

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

Q&A

解決済

1回答

543閲覧

Pythonで複数のページをスクレイピングしたいです。

jwill

総合スコア2

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2021/03/06 03:45

編集2021/03/08 04:07

複数のページで同じ情報を一括で取得したいです。
それで下記の所まで書いたのですが、
ここからどうしたら良いのかわからないのでアドバイスをいただけないでしょうか?

<追加>
何で削除されてないのかがわからない。このサイトへの不信感、日本のプログラミング界への不信感しかない。

import requests from bs4 import BeautifulSoup list = ['https://www.very.co.uk/nike-revolution-5-pink/1600494182.prd?crossSellType=item_page.recs_1', 'https://www.very.co.uk/nike-revolution-5-white/1600385578.prd?crossSellType=item_page.recs_1', 'https://www.very.co.uk/nike-revolution-5-blackpinkgrey/1600385605.prd?crossSellType=item_page.recs_1'] for url in list: html = requests.get(url) soup = BeautifulSoup(html.content, "html.parser") price = soup.find(class_="u-text-20 u-font-bold price") print(price.text)

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

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

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

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

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

meg_

2021/03/06 03:58

> それで下記の所まで書いたのですが、 ここからどうしたら良いのかわからないのでアドバイスをいただけないでしょうか? 現在のコードで質問者さんがやりたい事に対してどこまで実装できているのでしょうか? 「同じ情報を一括で取得」だけでは具体的なことが判りませんので、「ここからどうしたら良いのか」も第三者には回答のしようがないかと思います。 ※該当サイト(https://www.very.co.uk)はスクレイピンが禁止されていないサイトでしょうか?
jwill

2021/03/06 04:02

このサイトの使用途がわからないです。 何を質問して何を質問したいけないのががわからないです。
guest

回答1

0

ベストアンサー

質問の軸とズレていますが..

python

1# jwillさんのコード 2price = soup.find(class_="u-text-20 u-font-bold price") 3 4# 取得に失敗するのでこちらが安定しています。 5price = soup.find(attrs={"class" : "u-text-20 u-font-bold price"}) 6

下記コードは実務でスクレイピングをするときに使っています。
なにかの参考になるかもです。

実行方法

python

1url = "https://example.com" 2# trials_numberはリクエストが成功するまで任意の回数分繰り返します。 3html = try_to_succeed(url, trials_number=5)

メインコード

python

1import requests 2import time 3 4from fake_useragent import UserAgent 5from bs4 import BeautifulSoup as bs 6import lxml 7 8 9def try_to_succeed(url, trials_number=5): 10 """リクエストなどが成功するまで任意の指定回数分、繰り返す 11 12 1.指定URLをrequestする 13 2.レスポンスが200(正常)でなければユーザーエージェントを変更しながら指定回数分、requestする 14 3.成功したら、lxml or html.parser で解析したcontentを返す 15 16 url: リクエストするターゲットURL 17 trials_number: 試行回数 18 """ 19 # 繰り返し継続の判定 20 judge = False 21 22 for trial in range(trials_number): 23 if judge: 24 try: 25 parsed_html = bs(response.content, "lxml") 26 except: 27 parsed_html = bs(response.content, "html.parser") 28 29 # 解析済みのHTMLを返す 30 return parsed_html 31 32 try: 33 # ユーザーエージェントの設定 34 ua = UserAgent() 35 useragent = ua.random 36 headers = {'User-Agent':useragent} 37 38 response = requests.get(url, headers=headers) 39 judge = True if response.status_code == 200 else False 40 if trial >= 2: 41 time.sleep(1) 42 43 except Exception as e: 44 return e

投稿2021/03/06 04:08

hirokuro900

総合スコア33

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

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

jwill

2021/03/08 04:02

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問