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

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

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

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

Q&A

解決済

2回答

482閲覧

Python for文がうまくいかない助けてください

Ringopan19

総合スコア36

スクレイピング

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

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

0グッド

0クリップ

投稿2022/01/15 11:14

下記のコードでcomicsから一つづつ要素をとりcomicに代入し、comicから要素を取り出し辞書として格納し、最後にそれをリストに格納するというコードを書きたいのですが、エラーがでてしまいます、for文を使わず一つの要素を出すようコードを書けばエラーは出ないのですが、for文を使って全ての要素を取得しようとするとエラーが出ます、よろしければ対処法をご教授いただけると幸いです。

私が書いたエラーの出るコード↓

from time import sleep
from bs4 import BeautifulSoup
import requests

url = "https://alert.shop-bell.com/books/magazine/3/"
r = requests.get(url)
soup = BeautifulSoup(r.text)

d_list = []
comics = soup.find("tr", style="background-color:#eeeeee")

sleep(1)
for comic in comics:

title = comic.find("a", href="/comic/28210/") author = comic.find("span", class_="muted").text release_date = comic.find("td",class_="srpLatest").text[2:] d = { "title":title, "author":author, "release_date":release_date } d_list.append(d)

出てきたエラー↓

TypeError Traceback (most recent call last)
<ipython-input-98-b550d2e457b1> in <module>
7 for comic in comics:
8
----> 9 title = comic.find("a", href="/comic/28210/")
10 author = comic.find("span", class_="muted").text
11 release_date = comic.find("td",class_="srpLatest").text[2:]

TypeError: find() takes no keyword arguments

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

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

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

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

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

guest

回答2

0

python

1from time import sleep 2from bs4 import BeautifulSoup 3import requests 4 5url = 'https://alert.shop-bell.com/books/magazine/3/' 6r = requests.get(url) 7soup = BeautifulSoup(r.text, 'html.parser') 8 9comics = soup.find_all('tr', style='background-color:#eeeeee') 10d_list = [] 11for comic in comics: 12 title = comic.find('a').text 13 author = comic.find('span', attrs={'class': 'muted'}).text 14 release_date = comic.find('td', attrs={'class': 'srpLatest'}).text.split('巻')[1] 15 d = {'title': title, 'author': author, 'release_date': release_date} 16 d_list.append(d) 17 18from pprint import pprint 19pprint(d_list, width=50, sort_dicts=False) 20 21# 22[{'title': 'アイテルシー', 23 'author': '稲岡和佐', 24 'release_date': '2021年09月03日 発売'}, 25 {'title': 'AGRAVITY BOYS', 26 'author': '中村充志', 27 'release_date': '2021年07月02日 発売'}, 28 {'title': 'アメノフル', 29 'author': 'みたらし三大,たけぐし一本', 30 'release_date': '2021年12月03日 発売'}, 31 {'title': 'クーロンズ・ボール・パレード', 32 'author': '福井あしび,鎌田悠幹', 33 'release_date': '2021年10月04日 発売'}, 34 {'title': 'こちら葛飾区亀有公園前派出所', 35 'author': '秋本治', 36 'release_date': '2021年10月04日 発売'}, 37 {'title': '灼熱のニライカナイ', 38 'author': '田村隆平', 39 'release_date': '2021年10月04日 発売'}, 40 {'title': '森林王者モリキング', 41 'author': '長谷川智広', 42 'release_date': '2021年04月02日 発売'}, 43 {'title': 'NERU 武芸道行', 44 'author': '比良賀みん也', 45 'release_date': '2022年01月04日 発売'}, 46 {'title': 'BUILD KING', 47 'author': '島袋光年', 48 'release_date': '2021年09月03日 発売'}, 49 {'title': '仄見える少年', 50 'author': '松浦健人', 51 'release_date': '2021年07月02日 発売'}]

投稿2022/01/15 11:51

melian

総合スコア19618

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

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

Ringopan19

2022/01/15 11:58

素晴らしいコードをありがとうございます。また新たな問題が出てきてしまい問題解決に至っておりませんが。今回のいただいたコードを参考に精進してまいります。
guest

0

自己解決

title = comic.find("a", href="/comic/28210/")
上記のコードはhrefを指定しておりましたが、
hrefを指定せずaタグだけして取得すれば全ての要素を取ることができました。回答してくださった皆様ありがとうございました。
今はまだクソプログラマーですが、皆様の助けの恩を糧に少しはマシなプログラマーになってみせます。
本当にありがとうございました。

投稿2022/01/15 12:01

Ringopan19

総合スコア36

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問