0
特定のデータについてウェブサイトを廃止しています。 私のコードは一点までうまく動作します。特定のテーブルと行を探して、そのセルを選択し、それらをdictに配置します。私の問題は、行の最後のセルを選択することです。テーブル内の特定のtdを掻き集める
import urllib
import urllib.request
from bs4 import BeautifulSoup
import re
import os
import pandas as pd
theurl = "http://www.nationsonline.org/oneworld/IATA_Codes/airport_code_list.htm"
thepage = urllib
thepage = urllib.request.urlopen(theurl)
soup=BeautifulSoup(thepage, "html.parser")
air=[]
init_data = open('/Users/paribaker/Desktop/air.txt', 'a')
count = 0
while count <73:
title = soup.find_all('table',{'class':'tb86'})[(count)]
rows = title.findAll('tr')[1:]
data = {
'city' : [],
'country' : [],
'code' :[]
}
for row in rows:
col1 = row.find_all('td')[0]
col2 = row.find_all('td')[1]
col3 = row.find_all('td')[2]
print (col1.text)
print(col2.text)
print(col3.text)
#col3 = row.find_all('td')[1]
#data['city'].append(col1.get_text())
#data['country'].append(col2)
#data['code'].append(col3)
#dogData = pd.DataFrame(data)
#dogData.to_csv("dog.csv")
count += 3
td [2]が範囲内にないというエラーが表示されます。私がtdのセレクタを見ると、それは3番目のものなので、私は[2]を使います。
だけでなく、私はすべてのテーブルもすべての行をこするわけではありません。私はすべての3番目のテーブルを掻き取り、最初のテーブルを除くすべての行を掻き取るだけです。各行には、都市、国、コードの3つのデータポイントがあります。私は3つすべてを集めようとしています。すべての行がすべて3の値を持っているテーブルを見て、私は何かを逃していますか? –
私の投稿した出力はあなたのコードからまっすぐですが、デバッグステートメントが追加されています。これらのセルの内容は、都市/国/コードのデータではありません。 –
私の更新された答えを見てください - あなたが興味を持っているデータに絞る方法を示しました。一般に、要素タグ名(td、tr、あなたが望むものを正確に得ることができます。 –