私はウィキペディアの記事でテーブルを掻き集めようとしていますが、各テーブル要素のタイプは<class 'bs4.element.Tag'>
と<class 'bs4.element.NavigableString'>
のように見えます。BeautifulSoupタグは、タイプbs4.element.NavigableStringとbs4.element.Tagです
import requests
import bs4
import lxml
resp = requests.get('https://en.wikipedia.org/wiki/List_of_municipalities_in_Massachusetts')
soup = bs4.BeautifulSoup(resp.text, 'lxml')
munis = soup.find(id='mw-content-text')('table')[1]
for muni in munis:
print type(muni)
print '============'
次ouputをを生成します。私はmuni.contents
を取得しようとすると
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
============
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
============
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
...
私はAttributeError: 'NavigableString' object has no attribute 'contents'
エラーを取得します。
私は間違っていますか?それぞれmuni
のbs4.element.Tag
オブジェクトを取得するにはどうすればよいですか?
(Python 2.7を使用)。
おそらくことを知っています** munis **は、ウィキペディアのページの表を表しています。それを印刷すると、表のhtmlが表示されます。 ** munis **の子のタグ、つまりその行を表示したい場合は、munis.childGenerator()内のchild forというコードを使用できます:child.name' - 単一行の一連のtr引用符。私はこれがあなたが望むものだとは思わない。可能であればPythonリストの形式でテーブルの各行の内容をスクラップする方法を尋ねるべきでしょうか? –