2017-05-20 14 views
0

BeautifulSoupでWebページから4つの数値を抽出して、それらの値を後でCSV形式の文字列として1行に保存したいとします。BeautifulSoupリスト配列を文字列に変換するには?

変数への値の抽出と保存は、BeautifulSoups findAll()関数でうまくいきます。私が必要とする4つの値は、CSSスタイルの属性"font-size: 13pt"<p>タグ内にあります。これらの値はリスト配列linkData []に保存されます。

これらの変数を1行にStringとしてどのように保存できるか分かりません。私はあることをCSV出力を必要とするので、今、私は常に、問題である、改行を取得しています:var0,var1,var2,var3

の代わりに:

var0 
var1 
var2 
var3 

私はすでに私が私に追加され、いくつかのことを試してみました以下のコード。私はほとんど私の3番目のアプローチで動作したが、残念ながら、このオプションを使用すると、エンコーディングが間違っているようだ。

987, 1002, 278, 19が必要ですが、print()の出力は(u'\n987\n', u'\n1002\n', u'\n278\n', u'\n19\n')です。エンコーディングを変更するオプションはありますか?

私はBeautifulSoupをかなり新しくしているので、どんな助けもありがとうございます!

from bs4 import BeautifulSoup 
import urllib2 

opener = urllib2.build_opener() 
opener.addheaders = [('User-Agent', 'Mozilla/5.0')] 
response = opener.open('http://www.example.com') 

html = response.read() 
soup = BeautifulSoup(html, 'html.parser') 

linkData = soup.findAll("p", {"style": "font-size: 13pt;"}) 

var0 = linkData[0].text 
var1 = linkData[1].text 
var2 = linkData[2].text 
var3 = linkData[3].text 

# Approach 1: Just print variables comma-separated 
print var0, var1 

# Approach 2: Using join to concatenate the variables 
linkDataList = [var0, var1, var2, var3] 
str1 = ''.join(linkDataList) 
print str1 

# Approach 3: Use print() function 
print(var0, var1, var2, var3) 

敬具:

は、ここに私のコードです!

+0

:'プリント(var0.strip()、var1.strip()、var2.strip ()、var3.strip()) ' – zwer

+0

@zwerすぐにお世話になりました。そのような簡単な修正:) EyuelDK私はその特定のURLを開示したくないが、私はあなたが下にチェックするために別のURLを持つ修正版を作成した。希望が助けてくれる! –

答えて

1

変数を定義するときは、すべてstr.strip()を使用してすべての空白を削除してください。プリントアウトに示されるように、あなたのデータは非常にそれを取り除くその周りに改行空白( `\のN ')を持つ

var0 = linkData[0].text.strip() 
var1 = linkData[1].text.strip() 
var2 = linkData[2].text.strip() 
var3 = linkData[3].text.strip() 
+0

あなたのお手伝いもありがとう! –

関連する問題