2017-11-23 11 views
0

私はウィキペディアのページからそれを掻き集めて特定の場所のエリアを取得しようとしています。例としてCumbriaを使用して(https://en.wikipedia.org/wiki/Cumbria)私は情報ボックスを得ることができます。テキストで美しいスープのアイテムを探すタグではない

url = 'https://en.wikipedia.org/wiki/Cumbria' 
r = requests.get(url) 
soup = BeautifulSoup(r.content, 'lxml') 
value = soup.find('table', {"class": "infobox geography vcard"}) \ 
      .find('tr', {"class":"mergedrow"}).text 

しかしinfobox geography vcardは複数<tr class='mergerow'>サブセットを有し、各内<th scope='row'>です。

私が欲しい<th scope='row'><th scope="row">Area</th>で、他のすべてはあなたがすることができinfobox geography vcard

答えて

1

下ユビキタスであるとして、私が代わりにタグの「エリア」を検索することにより、<th scope="row">Area</th>のサブセットからテキストを取得することができれば、私は思っていましたすべてthscope=rowと直接検索してください。次にそれらを繰り返して、どのオブジェクトがテキストとしてAreaを持っているかを確認し、find_next_siblingを使用して、次の兄弟(必要なデータがtdになります)を取得します。

この表には、「儀式郡」と「非メトロポリタン郡」の2つの番号があります。

ths = soup.find_all('th', {'scope': 'row'}) 

for th in ths: 
    if th.text == 'Area': 
     area = th.find_next_sibling().text 
     print(area) 

# 6,768 km2 (2,613 sq mi) 
# 6,768 km2 (2,613 sq mi) 
+0

find_next_siblingについては、わかりませんでした。非常に便利! –

関連する問題