こんにちは。お世話になります。
Pythonで書いたコードを実行しようとするとエラーがでます。
エラーは下記です。
bash
1$ python3 sel-avocado.py 2Traceback (most recent call last): 3 File "sel-avocado.py", line 6, in <module> 4 print(soup.select_one("li:nth-of-type(8)").string) #(1) 5AttributeError: 'NoneType' object has no attribute 'string'
実行しようとしたコードは下記になります。ファイル名はsel-avocado.pyです。
Python3
1from bs4 import BeautifulSoup 2fp = open("fruits-vegetables.html", encoding="utf-8") 3soup = BeautifulSoup(fp, "html.parser") 4 5# CSSセレクタで選び出す 6print(soup.select_one("li:nth-of-type(8)").string) #(1) 7print(soup.select_one("#ve-list > li:nth-of-type(4)").string) #(2) 8print(soup.select("#ve-list > li[data-lo='us']")[1].string) #(3) 9print(soup.select("#ve-list > li.black")[1].string) #(4) 10 11# findメソッドで選び出す ---- (5) 12cond = {"data-lo":"us", "class":"black"} 13print(soup.find("li", cond).string) 14 15# findメソッドを二度組み合わせる --- (6) 16print(soup.find(id="ve-list") 17 .find("li", cond).string)
補足:fruits-vegetables.html
HTML
1<html><body> 2<div id="main-goods" role="page"> 3 <h1>フルーツや野菜</h1> 4 <ul id="fr-list"> 5 <li class="red green" data-lo="jp">リンゴ</li> 6 <li class="purple" data-lo="us">ブドウ</li> 7 <li class="yellow" data-lo="us">レモン</li> 8 <li class="yellow" data-lo="jp">オレンジ</li> 9 </ul> 10 <ul id="ve-list"> 11 <li class="white green" data-lo="jp">ダイコン</li> 12 <li class="red green" data-lo="us">パプリカ</li> 13 <li class="black" data-lo="jp">ナス</li> 14 <li class="black" data-lo="us">アボカド</li> 15 <li class="white" data-lo="cn">レンコン</li> 16 </ul> 17</div> 18<body></html>
どうすればコードを動かせますか。ご教授願います。
fruits-vegetables.htmlの内容も提示ください。
提示しました!