作者ukcm (欸欸)
看板Python
标题[问题] 新手爬虫输出至excel回圈问题
时间Sun Sep 4 15:18:19 2016
各位前辈好
问题为小弟想把网页爬出的每一页每一个品项资料依序写入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://webptt.com/cn.aspx?n=bbs/Python/M.1472973502.A.4A1.html
※ 编辑: ukcm (118.150.224.50), 09/04/2016 15:21:30
1F:→ s860134: 检查你巢状回圈 for j....这段确实是每同项重复写入k次. 09/04 16:54
2F:→ s860134: 最後一个 for k ... 是多余的,你的行数应该随 j 增加 09/04 16:56
3F:→ 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
4F:→ s860134: 回圈外设一个变数 item_index 作为计数器,在回圈内递增 09/04 19:50
5F:→ s860134: 既然你知道回圈在做甚麽 那你应该知道怎麽改 09/04 19:51
6F:→ ukcm: 问题解决了 真的非常感谢s大的耐心解说 09/05 10:39