爬新聞網站資料存成csv檔問題

作者: quingtw (bcdman)   2015-07-05 21:20:36
小弟我最近在抓新聞網站資料
用BeautifulSoup
用print資料都正常
但是存成csv檔就是出不來
請大家幫幫忙
程式碼
import requests
import csv
from bs4 import BeautifulSoup
res = requests.get("https://tw.news.yahoo.com/politics/archive/")
soup = BeautifulSoup(res.text)
for item in soup.select('.txt'):
f = open("stock.csv","w")
w = csv.writer(f)
w.writerows((item.select('a')[0].text).encode('utf-8'))
f.close()
作者: ccwang002 (亮)   2015-07-05 21:37:00
soup.select('.txt') 是空的,所以不會寫東西另外開檔跟 csv.writer(f) 可以放在迴圈外
作者: quingtw (bcdman)   2015-07-05 22:06:00
可是我用print item.select('a')[0].text這樣是有印出東西的
作者: ccwang002 (亮)   2015-07-05 22:57:00
你要不要再確定一次,因為 select 完 item 數是 0for loop 根本沒有進去,多寫一行 print 在 for 就知道
作者: quingtw (bcdman)   2015-07-06 00:31:00
有進去,有印出資料
作者: ccwang002 (亮)   2015-07-06 01:57:00
ok 但這在我電腦上就測不出來,只能隔空抓藥了我看不出 xxxx.encode() 為什麼要用 writerows()應該是像 w.writerow(['col1', 'col2']) # py2.7或 w.writerows([['r1c1', 'r1c2'], ['r2c1', 'r2']])elem.text 就只是個字串,理論上會寫出來,但格式會變會被直接 iterate 變成單字元單行的狀況
作者: quingtw (bcdman)   2015-07-06 02:33:00
嗯嗯謝謝講解我已經改成w.writerow了,但是csv檔案開起來還是一堆「??????」
作者: darkgerm (黑駿)   2015-07-06 15:19:00
你外部是怎麼開 csv 檔的?應該是外部軟體編碼的問題csv 通常編碼都是看 locale,如果你是中文環境存 big5試

Links booklink

Contact Us: admin [ a t ] ucptt.com