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

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

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

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

Python

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

Q&A

1回答

3473閲覧

pythonで'type' object is not iterableのエラーが出ます。

gengen0828

総合スコア1

スクレイピング

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

Python

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

0グッド

0クリップ

投稿2022/01/06 07:03

100のurlを格納したリストを活用しwebスクレイピングしたいのですが、
繰り返し処理が上手くいっておらず、同じ要素が繰り返し取得してしまいました。
下から4行目のコードを記載したところ'type' object is not iterableのエラーが出ます。
ご教授お願いいたします。
※記載のコードで全てです。

該当のソースコード

from bs4 import BeautifulSoup
import urllib.request as req
import urllib
import os
import time
from urllib.parse import urljoin
import requests
from bs4 import BeautifulSoup

#URLを指定
url ='https://www.jpubb.com/glist.php?industry=%E9%8A%80%E8%A1%8C'

#GETリクエストを送信
reqs = requests.get(url)

#URLをテキスト化し、解析を行う。その後BeautifulSoupオブジェクトを作る
soup = BeautifulSoup(reqs.text, 'html.parser')

#空のurlsのリストを用意
urls = []

#全てのaタグをループ処理し、hrefで指定されたURLを出力する
for link in soup.find_all(class_="bold"):
print("https:"+link.get('href'))
tmp = "https:"+link.get('href')
urls.append(tmp)

#****************ここまでが元のurlを取得する作業。urlsの要素数は100

#URLを指定
baseurl_list =urls
for urls in baseurl_list:

#GETリクエストを送信
reqs = requests.get(url)

#URLをテキスト化し、解析を行う。その後BeautifulSoupオブジェクトを作る
soup = BeautifulSoup(reqs.text, 'html.parser')

#空のpdfurlのリストを用意
pdfurl = []

#hrefで指定されたURLを出力する
for baseurl_list in list:
for list in soup.find_all(target="_blank"):
print(link.get('href'))
pdfurl.append(link.get('href'))

baseurl_listには100のurlが格納されています。一つづつwebスクレイピングするにはどのようにコードを記載すれば良いか教えてほしいです。


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

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

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

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

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

melian

2022/01/06 07:25

'type' object is not iterable というエラーが出るのは、list という名前の変数を使っているためです。 for baseurl_list in list: でもこれは、 for lst in baseurl_list: とするのではないでしょうか(in list ではなく in baseurl_list とする)。
quickquip

2022/01/06 07:47

コードは普通に読める状態でお願いします。(あとから編集可能です)
gengen0828

2022/01/06 23:45

ご回答ありがとうございます。 エラーを消すことが出来ました
gengen0828

2022/01/06 23:46

quickquipさん ご指摘ありがとうございます。 次回以降質問する際は読める状態にて投稿致します。
quickquip

2022/01/07 00:43

次回以降ではなくて直してください(とお願いしているのです) https://teratail.com/tour#animateBox8 > また、そうして改善された質問・回答は、同じ疑問を持った別の人にとってもより役立つはずです。
jbpb0

2022/09/26 03:11

> エラーを消すことが出来ました 解決したのなら、自分で回答を書いて「自己解決」にしてください
guest

回答1

0

python

1for baseurl_list in list:

の右のほうにあるlistは何かの書き間違いでしょう。
定義していないので、組み込みクラスのlistとなるので、エラーとなります。

python

1>>> for i in list: 2... pass 3... 4Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6TypeError: 'type' object is not iterable

他の組み込みクラスのsetとかdictでも同じことが起こります。

python

1>>> for i in dict: 2... pass 3... 4Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6TypeError: 'type' object is not iterable

投稿2022/01/06 07:21

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問