ウェブからデータをスクラップしながら生成するリストからパンダを作成する際に問題があります。ここで私はbeautifulsoupを使ってlocalharvest.org(農場名、都市、説明)からローカル農場に関する情報をいくつか取り上げています。データを効果的にスクラップして、各パスでオブジェクトのリストを作成できます。私が抱えている問題は、これらのリストを表形式のdfに出力することです。次のようにリストからパンダデータフレームを作成する際に問題が発生する
私の完全なコードは次のとおりです。
興味深いことにimport requests
from bs4 import BeautifulSoup
import pandas
url = "http://www.localharvest.org/search.jsp?jmp&lat=44.80798&lon=-69.22736&scale=8&ty=6"
r = requests.get(url)
soup = BeautifulSoup(r.content)
data = soup.find_all("div", {'class': 'membercell'})
fname = []
fcity = []
fdesc = []
for item in data:
name = item.contents[1].text
fname.append(name)
city = item.contents[3].text
fcity.append(city)
desc = item.find_all("div", {'class': 'short-desc'})[0].text
fdesc.append(desc)
df = pandas.DataFrame({'fname': fname, 'fcity': fcity, 'fdesc': fdesc})
print (df)
df.to_csv('farmdata.csv')
、print(df)
機能は、すべての3つのリストは、データフレームに渡されたことを示しています。しかし、結果の.CSV出力には、fnameおよびfdesc列ラベルが存在する単一列の値(fcity)のみが含まれます。間違いなく、タブの描画出力をdf.to_csv('farmdata.csv', sep='\t')
で強制しようとするような気がしたら、混乱した出力を持つ単一の列が得られますが、少なくともデータフレームの他の要素を渡しているようです。
事前にお問い合わせいただきありがとうございます。
これは完全に機能しました。私は問題がdescフィールドから来ていると仮定しました。私はbeautifulsoupが多くの改行文字を追加する傾向があることに気付きます。誰かが '.split()'を使って改行文字を削除することを提唱していました。これは大きな助けになります。ありがとうございました。 – JeremyD
スプレッドシートプログラムを使用してcsvファイルを表示していたのであれば、実際に最初の(空の)行だけを表示していたときに改行文字がセルのように見えると思います。あなたがうまく働いてうれしい。参考になった回答をupvotingおよび/または[accepting](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)してください。 – zarak