Re: [問題] python 將爬出來的資料匯出至檔案

看板Python作者 (渣)時間9年前 (2016/04/12 12:15), 9年前編輯推噓4(404)
留言8則, 2人參與, 最新討論串2/2 (看更多)
感謝大家的教學,後來小弟修正了一下改成如下 http://pastie.org/10794298 但是發現匯出來的CVS的分隔符號變成每一個字元出現一次 後來我試著單純用 ls = (item.select('.pName')[0].text) 匯出來卻變成一個字元換一行 請問我的參數是不是哪邊下錯了 非常感謝各位前輩的賜教 ※ 引述《brightsu (渣)》之銘言: : 大家好,小弟本身沒有什麼程式背景 : 最近開始接觸到了 Python 但是遇到了一些問題想請教一下大家 : 小弟按照著教學把網路上要得資訊爬下來 : print 也有資料出來 : 但是希望可以把print 出來的資料輸出成 txt or csv : 但是一直無法成功,想請教一下前輩是哪邊的邏輯有問題 : import requests : from bs4 import BeautifulSoup : res = requests.get("http://www.yodobashi.com/%E3%82%B9%E3%83%81%E3%83%BC%E3%83%A0%E3%82%AA%E3%83%BC%E3%83%96%E3%83%B3%E3%83%AC%E3%83%B3%E3%82%B8/ct/6567_500000000000000211/?count=48&discontinued=false&disptyp=01&oword=Hitachi&page=1&searchtarget=prodname&sorttyp=COINCIDENCE_RANKING&ginput=Hitachi") : soup = BeautifulSoup(res.text) : for item in soup.select('.pListBlock'): : f = open('A.txt', 'w', encoding = 'UTF-8') : f.write (item.select('.pName')[0].text,item.select('.red')[0].text) : f.close () : requests.get的縮址 http://goo.gl/PS3c4K : 感謝大家 @@ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.39.219.4 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1460434539.A.074.html

04/12 12:51, , 1F
w.writerow (ls)
04/12 12:51, 1F

04/12 12:51, , 2F
你多一個s
04/12 12:51, 2F
阿...真的,抱歉小弟還是個初學著沒注意到這一點 感謝前輩的提醒 :)

04/12 13:10, , 3F
w = csv.writer(f, delimiter=';') 可以移到for loop外
04/12 13:10, 3F
好的,小弟做個修正,感謝 另外請教一下 writerows 跟 writerow 有什麼差異性?? 因為網路上的教學給的是 writerows 可是使用之後就如我敘述的那樣子 不知道這兩個之間的差異性在哪?? ※ 編輯: brightsu (202.39.219.4), 04/12/2016 13:36:03

04/12 13:49, , 4F
你如果要存成CSV的ls是長這樣[[A,B,C],[A,B,C]]就可以在for
04/12 13:49, 4F

04/12 13:49, , 5F
loop外用w.writerows (ls) 一次寫入
04/12 13:49, 5F

04/12 13:56, , 6F
因為字串也可迭代 所以你的ls=('ABC','ABC') 寫入就會變成
04/12 13:56, 6F

04/12 13:57, , 7F
每個字元分隔 以上...小弟也是新手 有錯請指證
04/12 13:57, 7F

04/12 14:06, , 8F
上面說得沒錯
04/12 14:06, 8F
感謝您的解說 :) ※ 編輯: brightsu (125.227.175.246), 04/12/2016 15:15:35
文章代碼(AID): #1N37Ph1q (Python)
文章代碼(AID): #1N37Ph1q (Python)