からデータを追跡:XPathは、私はいくつかの時間のためのウェブサイトに掘ってきたすべてのテーブル
http://directory.ccnecommunity.org/reports/rptAccreditedPrograms_New.asp?sort=institution
私は、各大学から修士の下でデータを抽出する必要があります。
すべての大学がマスターのデータを持っているわけではないので、私はそれを把握する必要があります。
どうすればこの状況のデータを追跡できますか?
これまでXPATHコードと私のパイソン:
import __future__
from lxml import html
import requests
from bs4 import BeautifulSoup
page = requests.get('http://directory.ccnecommunity.org/reports/rptAccreditedPrograms_New.asp?sort=institution')
soup = str(BeautifulSoup(page.content, 'html.parser'))
tree = html.fromstring(soup)
for table in tree.xpath('//table[@width="95%" and @align="center" and @class="center"]'):
print('-- NEW TABLE -- \n')
tab = table.xpath('.//table[@width="260px"]/tr/td[@style="width: 100%;"]/text()')
print(tab)
print('Ready !!')
あなたはそれが-- NEW TABLE --
を出力しますが、tab
変数が空の配列で見たよう。
tab
変数は、バカロレア、各テーブルの看護実践の修士と博士の下でのデータで構成されている必要があります。
それは魔法のように動作します。 これを理解するのを手伝ってください。 なぜあなたは 'ancestor :: tr [1]'を入れましたか? なぜ 'td'を' tr [td ...] 'のように' td'を置くのですか? –
'tr [td ...]'はあなたが探しているデータでtrを見つけます。 'ancestor :: tr [1]'は、これより上の次のtrを見つけます。このtrは、1つの大学のすべてのデータを保持します。 –
しかし、なぜそれは 'tr/td [...]'のようには機能しませんか? 'td'はなぜ' tr'のインデックスでなければならないのですか? 'tab'の変数xpathを見ると違っています...なぜですか? 'TR [TD ...]'(TR発現を有すると述語)が 'tr'しかしを見つけ –