環境: Windows10 python3 jupyternote
あるURLのページから複数のページにアクセスし、文字列を抽出しようとしているのですがあるページでエラーが発生してしまいます。
状況といたしまして
#ライブラリのインポート
from bs4 import BeautifulSoup
import urllib.request as req
from selenium import webdriver
import time
import pandas as pd
import requests
#URLの取得
url = 'https://yakkun.com/swsh/zukan/'
res = requests.get(url)
soup = BeautifulSoup(res.content, 'html.parser')
poke_table = soup.find('ul',class_='pokemon_list')
#リンクしたいURLリストの作成
links=[]
for aa in poke_table.find_all("a"):
link = aa.get("href")
pokeURLs = "https://yakkun.com" + link
links.append(pokeURLs)
#リンク先のポケモンの種族値計算
for poke_state in links:
html = req.urlopen(poke_state)
parse_html = BeautifulSoup(html,'html.parser')
aaa = parse_html.find(class_="table layout_right")
bbb = aaa.find_all(class_="c1")
for tr in aaa.find_all('tr'):
if '種族値' in tr.text:
title = tr.text
print(title)
hitpoint = tr.find_next_sibling()
attack = hitpoint.find_next_sibling()
defence = attack.find_next_sibling()
special_attack = defence.find_next_sibling()
special_defence = special_attack.find_next_sibling()
speed = special_defence.find_next_sibling()
average = speed.find_next_sibling()
print(hitpoint.text.split()) print(attack.text.split()) print(defence.text.split()) print(special_attack.text.split()) print(special_defence.text.split()) print(speed.text.split()) print(average.text.split())
で実行すると
◆ サルノリの種族値
['HP', '50']
['こうげき', '65']
['ぼうぎょ', '50']
['とくこう', '40']
['とくぼう', '40']
['すばやさ', '65']
['平均', '/', '合計', '51.7', '/', '310']
◆ バチンキーの種族値
['HP', '70']
['こうげき', '85']
['ぼうぎょ', '70']
['とくこう', '55']
['とくぼう', '60']
['すばやさ', '80']
['平均', '/', '合計', '70.0', '/', '420']
中略
◆ チェリムの種族値
['HP', '70']
['こうげき', '60']
['ぼうぎょ', '70']
['とくこう', '87']
['とくぼう', '78']
['すばやさ', '85']
['平均', '/', '合計', '75.0', '/', '450']
フラワーギフト天気が『にほんばれ』の時、ポジフォルムにフォルムチェンジする。種族値などは変わらないが、自分とすべての味方の『こうげき』『とくぼう』が1.5倍になる。
AttributeError Traceback (most recent call last)
<ipython-input-5-99deab9f3841> in <module>
13 special_attack = defence.find_next_sibling()
14 special_defence = special_attack.find_next_sibling()
---> 15 speed = special_defence.find_next_sibling()
16 average = speed.find_next_sibling()
17
AttributeError: 'NoneType' object has no attribute 'find_next_sibling'
このチェリムというポケモンのページでエラーが発生してしまいます。
ほかのページのソースと比較してみたのですが特に違いも判らない状況です。
どなたかわかる方がいれば、ご教授お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/02 12:27