看板 Python 關於我們 聯絡資訊
各位前輩好 問題為小弟想把網頁爬出的每一頁每一個品項資料依序寫入excel 但輸出至excel的結果都是最後一頁最後一個品項重複寫入1~rows 原始碼如下,請問該如何修改,謝謝~ dict = {}; page = 10 rows = page*10 w = xlwt.Workbook() path_excel = '/home/pi/data/'+filename+'.xls' t = w.add_sheet('ZH',cell_overwrite_ok=True) for i in range(page): #頁數迴圈 dict['resp%d' % (i+1)] = opener.open('http://www.zowhong.com.tw/order/s earch.php?page=%d' % (i+1)).read() soup = BeautifulSoup(dict['resp%d' % (i+1)]) #soup每一頁 quantity = len(soup.select('.f01')) #偵測每頁品項數量 for j in range(quantity): #先輸出所有f01品項,f02價格 print soup.select('.f01')[j].text.strip(), soup.select('.f02')[ for k in range(rows): #行數迴圈 t.write(k,0,soup.select('.f01')[j].text.strip()) t.write(k,1,soup.select('.f02')[j].text) w.save(path_excel) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.150.224.50 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1472973502.A.4A1.html ※ 編輯: ukcm (118.150.224.50), 09/04/2016 15:21:30
s860134: 檢查你巢狀迴圈 for j....這段確實是每同項重複寫入k次. 09/04 16:54
s860134: 最後一個 for k ... 是多餘的,你的行數應該隨 j 增加 09/04 16:56
s860134: 另外變數命名盡量不要和內建類別重複 dict 09/04 16:57
好的 感謝提點~ 因為每頁品項皆為10個,除了最後一頁不固定外(目前為3個) for j迴圈會一直隨著跳下一頁在0~10之間(除最後一頁0~4) 試過t.write(j,0,soup.select('.f01')[j].text.strip()) 變成excel內容會被最後一頁的品項覆蓋過去 原諒小弟剛碰程式且資質駑鈍,不知道s大可否再進一步解釋,謝謝 ※ 編輯: ukcm (118.150.224.50), 09/04/2016 17:40:05
s860134: 迴圈外設一個變數 item_index 作為計數器,在迴圈內遞增 09/04 19:50
s860134: 既然你知道迴圈在做甚麼 那你應該知道怎麼改 09/04 19:51
ukcm: 問題解決了 真的非常感謝s大的耐心解說 09/05 10:39
salmon12706: 工研院人工智慧課程推薦https://reurl.cc/4RDRaK 06/29 16:27