1

wikiページ、特にこれからテキストをスクレイピングしようとしています 私は BeautifulSoup を使用しているか、少なくともしようとしています... 私は Web スクレイピングの経験があまりありません。これまでの私のコードは次のとおりです...

import urllib
import urllib.request
from bs4 import BeautifulSoup

soup =BeautifulSoup(urllib.request.urlopen('http://yugioh.wikia.com/wiki/Card_Tips:Blue-Eyes_White_Dragon').read())

for row in soup('span', {'class' : 'mw-headline'})[0].tbody('tr'):
      tds = row('td')
      print(tds[0].string, tds[1].string, tds[2].string)

各ヘッダー (検索可能、手札からの特殊召喚など) を取得し、各カテゴリの各カードを取得しようとしています。誰でも私にアドバイスをもらえますか?

4

2 に答える 2

3

HTML コードを調べると、次のことがわかります。

<div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="en">
 ...
 <h3>
  <span class="mw-headline" id="Searchable_by">
   Searchable by
  </span>
 ...
 </h3>
 <ul>
  <li>
   "
   <a href="/wiki/Summoner%27s_Art" title="Summoner's Art">
    Summoner's Art
   </a>
   "
  </li>
  <li>
   "
   <a href="/wiki/The_White_Stone_of_Legend" title="The White Stone of Legend">
    The White Stone of Legend
   </a>
   "
  ...
  </li>
 </ul>
 ...
<\div>

上記のスニペットは、次の事実を示しています。

  • divwithid="mw-content-text"には wikiが含まれます。
  • タイトルはh3タグの最初の (そして唯一の) にありspanます。
  • ulタグには箇条書きリストが含まれます。

したがって、Python コードでは次のようになります。

from bs4 import BeautifulSoup

soup = BeautifulSoup(open('stack.htm').read()) # I saved the webpage
main_tag = soup.findAll('div',{'id':'mw-content-text'})[0]

headers = main_tag.find_all('h3')
ui_list = main_tag.find_all('ul')
for i in range(len(headers)):
    print(headers[i].span.get_text())
    print('\n -'.join(ui_list[i].get_text().split('\n')))
sections = zip((x.span.get_text() for x in headers), ('\n -'.join(x.get_text().split('\n')) for x in ui_list))
于 2013-04-04T15:21:16.263 に答える