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

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

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

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

Python

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

Q&A

解決済

1回答

2010閲覧

webスクレイピングした要素をリストに格納したいです。

gengen0828

総合スコア1

スクレイピング

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

Python

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

0グッド

0クリップ

投稿2022/01/06 03:04

前提・実現したいこと

webスクレイピングした要素をlistに格納したい。

ここに質問の内容を詳しく書いてください。
(例)
python3.7.3の環境でwebスクレイピングを行っています。
現在業務の一環でwebスクレイピングを活用し情報を収集しています。
今回はホームページからurlをスクレイピング→リストに格納→リストから再スクレイピング→リストに格納です。

2回目のスクレイピングまでうまくいったのですが、スクレイピングしたものをリストの最初の行から取得した要素のみ格納され、2行目以降のurlから取得した要素が格納出来ません。
格納方法をご教授願います。
原因をご教授願います。

発生している問題・エラーメッセージ

エラーメッセージ

エラーメッセージはございません。下から2行目にて要素取得に成功しているのですが、最終行で取得した要素をリストに格納すると1つ目のみ格納となります。 ### 該当のソースコード 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 link in soup.find_all(target="_blank"): print(link.get('href')) pdfurl.append(link.get) ****************************************************************************************** ```ここに言語名を入力 ソースコード

試したこと

ここに問題に対して試したことを記載してください。


list1=['https://www.jpubb.com/press/2974596/']
list2=['https://www.jpubb.com/press/2974600/']

URL=[]

URL[len(URL):len(URL)]=func(list1)
URL[len(URL):len(URL)]=func(list2)


1つづつurlを分けて入力したところリストに格納されましたが、上記方法の応用する方法が分からず、困っています。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1 pdfurl.append(link.get) 2

は、

python

1 pdfurl.append(link.get('href')) 2

の書き間違いではないですか?

投稿2022/01/06 03:27

ppaul

総合スコア24670

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

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

gengen0828

2022/01/06 04:13

ご返信ありがとうございます。 書き間違いと指摘いただいた箇所を直してみたのですが、結果は変わらなかったです。
ppaul

2022/01/06 05:03

提示されたコードが全体なのか部分なのかがはっきりしないので、先ほどは書きませんでしたが、 pdfurlに一回分しか入らないことを気にしているなら、ループの中でpdfurl = []をやっているのが原因です。 そうでない問題があるならその問題点を質問に追加してください。
gengen0828

2022/01/06 05:55

ありがとうございます。 解決致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問