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.
いいえ、それは私を助けていませんでした。 –
このコードで得られる 'df'の値は何ですか?そして、あなたはそれが何になりたいですか? @AshishBaboo –
これは擦り傷の問題のようです。配列 'A'、' B'、 'C'を印刷して、値が空でないかどうか調べてください。 –