環境: Windows10 python3 jupyternote
とあるサイトから Beautiful soup を用いて特定の文字列を抽出したいのですが思い通りにできなくて困っています。
状況といたしまして
from bs4 import BeautifulSoup
import urllib.request as req
parse_html = BeautifulSoup(html,'html.parser')
url= "https://yakkun.com/swsh/zukan/n812"
aaa = parse_html.find_all('tr')
bbb = aaa[15:30]
print(bbb)
とすると
[<tr><th class="left" colspan="6"><a href="#" id="race" name="race" onclick="helpZukan(event,'race');return false;" onkeypress="helpZukan(event,'race');return false;"><img alt="ヘルプ" class="help" src="//78npc3br.user.webaccel.jp/page/help.gif"/></a>◆ ゴリランダーの種族値</th></tr>,
中略
すばやさ 150 137 105 94 81
といった感じで抽出したいのですがどうやったらいいのかわからないです。
ちなみに
ccc = aaa.find_all(class_="c1")
print(ccc)
としたら
ddd = aaa.find_all(class_="left")
ddd[1].string
と書いても何も表示されないです。
図鑑リストからリンクさせて表示させるようなコードを書いて実行したら
このページだけ
from bs4 import BeautifulSoup
import urllib.request as req
url= "https://yakkun.com/swsh/zukan/n421"
html = req.urlopen(url)
parse_html = BeautifulSoup(html,'html.parser')
table = parse_html.find(class_="table layout_right")
for tr in table.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', '70']
['こうげき', '60']
['ぼうぎょ', '70']
['とくこう', '87']
['とくぼう', '78']
['すばやさ', '85']
['平均', '/', '合計', '75.0', '/', '450']
フラワーギフト天気が『にほんばれ』の時、ポジフォルムにフォルムチェンジする。種族値などは変わらないが、自分とすべての味方の『こうげき』『とくぼう』が1.5倍になる。
と表示され
AttributeError Traceback (most recent call last)
<ipython-input-4-ed11b57b4eb5> in <module>
8 special_attack = defence.find_next_sibling()
9 special_defence = special_attack.find_next_sibling()
---> 10 speed = special_defence.find_next_sibling()
11 average = speed.find_next_sibling()
12
AttributeError: 'NoneType' object has no attribute 'find_next_sibling'
エラーになります。このページだけ他と違う理由がわからないです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。