2017-05-01 4 views
0

エラーを必要とするというエラーを取得:」+ハブ) はTypeError:strをしなければならない、Pythonに新しく、15分ごとにリフレッシュするテーブルをwebscrapeしようとしました。</p> <p>C: Pythonは> Pythonは トレースバック(最新の呼び出しの最後)webscrape.py:( 印刷に ファイル "webscrape.py"、ライン23を、「ハブ文字列に

コード一覧ません:

from urllib.request import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

my_url = 'http://www.ercot.com/content/cdr/html/real_time_spp' 

# opening up connection, grabbing the web page 
uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 

# html parsing 
page_soup = soup(page_html, "html.parser") 

# grabs the market conditions 
intervals = page_soup.findAll("div",{"id":"today"}) 

for interval in intervals: 
    hubs = interval.table.tr.th["class"] 

    price_intervals = interval.findAll("td",{"class":"labelClassCenter"}) 
    all_prices = price_intervals[0].text 

    print ("hubs:" + hubs) 
    print ("all_prices:" + all_prices) 
+1

...ハブ場合....あなたはそれがそのようなコンテンツだ表示することはできませんので、リストでありますたとえば、 'print(" Hubs: "+ hubs [0])'と書くと、1つの結果を得るか、 'print(" Hubs: "+ hubs.join ( "、")) ' – Hackerman

答えて

1

あなたがそれらを連結ではない、カンマで区切る必要があります:

print("hubs:", hubs) 

あなたはこのように同じ警告を取得している:

>>> print("hi" + [1]) 
Traceback (most recent call last): 
    File "<pyshell#0>", line 1, in <module> 
    print("hi" + [1]) 
TypeError: must be str, not list 
>>> print("hi", [1]) 
hi [1] 

を使用すると、文字列とリストを連結(またはまとめる)しようとしているプラ​​ス記号で。

>>> print("hi" + str([1])) 
hi[1] 

あなたはコンマで値を区切りにしたい場合は、','.join(hubs)の操作を行います。あなたはそれをしたい場合は、リストに文字列を確認する必要があります。

注:Python 2を使用している場合は、printステートメントにかっこは必要ありません。それを行うには

もう一つの方法は、書式設定文字列である:うん、エラーは、それ自体非常にわかりやすいです

print(“hubs: {hubs}”.format(hubs=hubs)) 
+0

python3の代わりにpython2を使用している場合は、おそらくprintステートメントにかっこを入れたくないでしょう。 –

+0

@DanielH彼はprintステートメントのかっこのためにpython 3を使っているようです。 – rassar

+1

はい、質問から、そしてPythonの初心者には、それは保証ではありません。私がPython(2)を最初に学んだとき、それは他のプログラミング言語(そしてPythonでの他のほとんどの操作)がどのように機能するかによって、括弧を誤って入れてしまうことがよくあります。 –

関連する問題