2017-07-25 5 views
1

私はウェブサイトからテーブルを掻き集めようとしていますが、すべてエラーなく実行できますが、CSVで開くと、複数のウェブスクラップがあります。私がウェブで擦っているテーブルだけ。PythonでテーブルをWebで擦ってみるときに、テキストを何倍にするのですか?

enter image description here

の表は、53行から開始し、私はそれを理解していません。 なぜ私のコードは、テーブルだけでなく、テキストをWebで擦っているのですか?

マイコード:

from bs4 import BeautifulSoup 
from selenium import webdriver 
import time 
import unicodecsv as csv 

filename = r'output.csv' 

resultcsv = open(filename, "wb") 
output = csv.writer(resultcsv, delimiter=';', quotechar='"', 
        quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1') 

profile = webdriver.FirefoxProfile() 
profile.set_preference("intl.accept_languages", "en-us") 
driver = webdriver.Firefox(firefox_profile=profile) 
driver.get("https://www.flightradar24.com/data/airports/bud/arrivals") 
time.sleep(10) 
html_source = driver.page_source 
soup = BeautifulSoup(html_source, "html.parser") 
print(soup) 

table = soup.find('table', { "class" : "table table-condensed table-hover data-table m-n-t-15" }) 

datatable = [] 
for record in table.find_all('tr'): 
    temp_data = [] 
    for data in record.find_all('td'): 
     temp_data.append(data.text.encode('latin-1')) 
    datatable.append(temp_data) 

output.writerows(datatable) 

resultcsv.close() 
+1

あなたはデータテーブルの値を調べることができますか? –

+1

読みやすさを向上させるために、すべての冗長なインポートなどを削除するようにコードを修正しました。 –

+0

どこで修正しましたか?私はそれを見ることができません:S – tardos93

答えて

1

あなたのテーブルがtrタグ内のすべてのこれらの行が含まれている、彼らはあなたがしたい行を追加する理由、それはです。

あなたはあなたのケースで、これは動作するはずです、あなたが期待するタグのクラスをフィルタリングする必要があります:あなたはCSVファイルに書き込む前に、

for record in table.find_all('tr', class_="hidden-xs hidden-sm ng-scope"): 
    temp_data = [] 
    for data in record.find_all("td"): 
     temp_data.append(data.text.encode('latin-1')) 
    datatable.append(temp_data) 
関連する問題