2017-06-11 9 views
0

私はPythonでページからデータをスクラップしました。私はテーブルのタグの内容を印刷することができます。しかしその後、私はそれをリストとして取得してデータフレームに変換することができません。これは私のコードですリストを取得し、Pythonでウェブスクレイピングでデータフレームに変換する方法

import urllib2 
import pandas as pd 
wiki = "https://www.marinetraffic.com/en/ais/index/ships/all/per_page:50/page:1" 
hdr = {'User-Agent': 'Mozilla/5.0'} 
req = urllib2.Request(wiki,headers=hdr) 
page = urllib2.urlopen(req) 
from bs4 import BeautifulSoup 
soup = BeautifulSoup(page, "html.parser") 
#print soup.prettify() 
print soup.title.string 
#print soup.a 

all_links = soup.find_all("a") 
for link in all_links: 
    link.get("href") 
all_tables=soup.find_all('table') 
right_table=soup.find('table', class_='table table-hover text-left') 
print right_table 
#Generate lists 
A=[] 
B=[] 
C=[] 
D=[] 
E=[] 
F=[] 
G=[] 
for row in right_table.findAll("tr"): 
    cells = row.findAll('td') 
    states=row.findAll('img') #To store second column data 
    if len(cells)==12: #Only extract table body not heading 
      A.append(states[0].find(text=True)) 
      B.append(cells[0].find(text=True)) 
      C.append(cells[2].find(text=True)) 
      D.append(cells[3].find(text=True)) 
      E.append(cells[4].find(text=True)) 
      F.append(states[1].find(text=True)) 
      G.append(cells[6].find(text=True)) 
df=pd.DataFrame(A,columns=['Flag']) 
df['Vessel ID']=B 
df['MMSI']=C 
df['Vessel Name']=D 
df['Photo']=E 
df['Type']=F 
df['Latest Position']=G 
print df 

これは1つのフィールドのデータしか与えません。残りのフィールドは空でもなくてもよい。 助けてください。前もって感謝します。

編集:私はthis image のようなデータが欲しいが、私は、これはあなたが何をしたいと思い出力like this.

答えて

-1

を取得しています -

df = pd.DataFrame([A, B, C, D, E, F, G], columns=['Flag', 'Vessel ID', 'MMSI', 'Photo', 'Type', 'Latest Position']) 
print df 
+0

いいえ、それは私を助けていませんでした。 –

+0

このコードで得られる 'df'の値は何ですか?そして、あなたはそれが何になりたいですか? @AshishBaboo –

+0

これは擦り傷の問題のようです。配列 'A'、' B'、 'C'を印刷して、値が空でないかどうか調べてください。 –

関連する問題