【发布时间】:2021-09-11 14:46:56
【问题描述】:
我从网站上抓取的列表有 6 个元素,for 循环也考虑了 6 个元素,但是当我尝试执行程序时,我得到一个 ValueError(预期为 6)。这真的让我很困惑,我在我的绳索尽头!希望比我聪明得多的人可以帮助我解决这个问题! 谢谢
import bs4 as bs
import xlsxwriter as xl
y = 0
revenue = 0
row = 0
col = 0
r = requests.get('https://www.moneycontrol.com/financials/britanniaindustries/consolidated-profit-lossVI/BI')
soup = bs.BeautifulSoup(r.content,'lxml')
table = soup.find(class_='mctable1').find_all('tr')[1:]
elem = table
for row in elem:
y += 1
cell = [i.text for i in row.find_all('td')]
if y == 8:
revenue = cell
# upon printing revenue at this point I get : ['Total Revenue', '13,449.07', '11,878.95', '11,261.12', '10,080.36', '9,204.63', '\xa0']
workbook = xl.Workbook('investment data.xlsx')
worksheet = workbook.add_worksheet()
for head, twentyone, twenty, nineteen, eighteen, rubbish in revenue:
worksheet.write(row, col, head)
worksheet.write(row, col + 1, twentyone)
worksheet.write(row, col + 2, twenty)
worksheet.write(row, col + 3, nineteen)
worksheet.write(row, col + 4, eighteen)
worksheet.write(row, col + 5, rubbish)
workbook.close() ```
【问题讨论】:
-
只是跳过代码:您确定该收入实际上包含一个列表吗?我明白了,只有在满足某些条件时才会分配
revenue = cell。最简单的解释是,这个条件永远不会满足,并且您尝试访问revenue = 0中的 6 个元素 -
@sagre 当我注释掉所有 xlwriter 的东西并在第一个 for 循环之后打印出收入时,我确实得到了一个包含相关信息的列表!所以这一定意味着该列表已正确定义,对吧?
-
您能否在 for 循环之前使用
revenue的内容编辑您的帖子? -
@Sagre 已编辑添加列表!
标签: python excel list web-scraping html-table