前提・実現したいこと
私は、webスクレイピングの勉強をしております。現在、https://prtimes.jp/main/html/searchbiscate/busi_cate_id/003/lv2/11 のサイトから、企業名を取得し、リスト化しようとしております。
このサイトは下にスクロールすると、’もっと見るボタン’があり、それをクリックするとさらにデータが表示されます。今回は練習として、15回程クリックして、そこに表示されたデータをリスト化しようとしております。
ブラウザを操作し、while文を用いて、’もっと見るボタン’をクリックすることはできるのですが、クリック後のデータがリスト化できません。(クリック前の直近40データはリスト化できます。)何が間違っているのかご教授いただけると幸いです。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1#ライブラリのimport 2from bs4 import BeautifulSoup 3import urllib.request as req 4import pandas as pd 5from selenium import webdriver 6import chromedriver_binary 7import datetime 8from datetime import date 9from datetime import timedelta 10import time 11 12#googlechromeを起動 13browser = webdriver.Chrome() 14#chromeドライバーが見つかるまでの待ち時間を設定 15browser.implicitly_wait(3) 16 17#ページサイトへアクセス 18 19#urlの指定 20url = 'https://prtimes.jp/main/html/searchbiscate/busi_cate_id/003/lv2/11' 21#指定したurlへ遷移する 22browser.get(url) 23 24#urlへ遷移する前に下の処理に行かないための記述 25time.sleep(3) 26 27x = 1 28while x <= 15: 29 #クリックの動作を入力 30 #find_element_by_idはhtmlのidの要素を指定して入力できる 31 browser_from = browser.find_element_by_id('more-load-btn-view') 32 time.sleep(3) 33 browser_from.click() 34 print('クリックしました') 35 x = x + 1 36 37#指定したウェブサイトのhtmlを取得する 38response = req.urlopen(url) 39 40parse_html = BeautifulSoup(response, 'html.parser') 41parse_html 42 43 44#aタグの一覧から複数のクラス名を[]で指定して取得する 45found_lists = parse_html.find_all('article' ,class_= 'item item-ordinary') 46 47 48 49found_articles = [] 50 51for article in found_lists: 52 datetime = article.find('time', class_='time-release time-release-ordinary icon-time-release-svg') 53 found_datetime = datetime['datetime'] 54 found_articles.append(found_datetime.split()) 55 found_company_a = article.find('a', class_='link-name-company name-company name-company-ordinary') 56 found_company =found_company_a.text 57 found_title_a =article.find('a', class_='link-title-item link-title-item-ordinary') 58 59 60 61 62 63 article={ 64 'found_datetime':found_datetime.split(), 65 'found_company':found_company_a.contents[0], 66 'found_title':found_title_a.contents[0] 67 } 68 found_articles.append(article) 69#------------------------------------------------------------- 70print(found_articles) 71
試したこと
取得classの確認
補足情報(FW/ツールのバージョンなど)
Python 3.6.0 lxml4.6.2 pandas0.25.3 datetime
ここにより詳細な情報を記載してください。
変換したいデータを取得したホームページ https://prtimes.jp/main/html/searchbiscate/busi_cate_id/003/lv2/11 (注:これは、スクレイピングの練習のために、書いているコードなので、データ自体はなんでも構いません
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/08 07:24