前提・実現したいこと
Pythonを用いて、html内からCSSセレクターを使用してキーワードを抽出する。
ここに質問の内容を詳しく書いてください。
Pythonを使ったCSSセレクターの「nth-of-type(n)」での指定方法について
発生している問題・エラーメッセージ
下記のようなfruits.vegetables.htmlというシンプルなhtmlがあったとします。
PythonのBeautifulSoupを用いてhtmlを解析後、
soup.select_one("li:nth-of-type(n)").string
で<li>タグから該当の要素を抽出したいと考えています。
nth-of-type(4)を指定すると「オレンジ」が抽出されます。
nth-of-type(5)を指定すると、全体で上から5番目の<li>タグである、「ダイコン」が抽出されて欲しいのですが、9番目の「レンコン」が抽出されてしまう原因を知りたいです。
なお、nth-of-type(6)を指定すると下記のようなエラーメッセージが出るため、
エラーメッセージ AttributeError: 'NoneType' object has no attribute 'string'
該当のソースコード
・Pythonプログラム
from bs4 import BeautifulSoup
fp = open("./fruits-vegetables.html",encoding="utf-8")
soup = BeautifulSoup(fp, "html.parser")
print(soup.select_one("li:nth-of-type(6)").string)
・上記で開いた「fruits.vegetables.html」のソースコード
<html><body> <div id="main-goods" role="page"> <h1>フルーツや野菜</h1> <ul id="fr-list"> <li class="red green" data-lo="jp">リンゴ</li> <li class="purple" data-lo="us">ブドウ</li> <li class="yellow" data-lo="us">レモン</li> <li class="yellow" data-lo="jp">オレンジ</li> </ul> <ul id="ve-list"> <li class="white green" data-lo="jp">ダイコン</li> <li class="red green" data-lo="us">パプリカ</li> <li class="black" data-lo="jp">ナス</li> <li class="black" data-lo="us">アボカド</li> <li class="white" data-lo="cn">レンコン</li> </ul> </div> <body></html>試したこと
ここに問題に対して試したことを記載してください。
上記では
特になし
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/19 05:47 編集
2020/04/19 06:38