Я работаю над проектом, который вращает очистку большого количества данных.Я сейчас работаю над довольно длинным сценарием, но столкнулся с проблемой моего цикла for.
Я пытаюсь вычистить информацию из таблицы из 9 строк.Я попытался настроить цикл так, чтобы он собирал одну и ту же информацию из каждой строки.Чтобы получить доступ к первой строке, я разделил таблицу на список.Первый ряд начинается с третьего индекса.
Вот мой код:
Когда я запускаю его, я получаю «AttributeError» в строке «Aa».Ошибка гласит: «Объект« NoneType »не имеет атрибута« текст »»
Этого не происходит, когда я отдельно подаю эту строку кода в консоль, я получаю нужный текст.И когда я вынимаю цикл for, я могу очистить первый indaplaybox.
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url ='Myurl/=' + page
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
boxes = page_soup.findAll("table",{"class":"TableTable tableBody"})
box = boxes[0]
playboxes = box.find_all('tr')
indaplaybox = playboxes[3]
filename = "QBS.csv"
f = open(filename, "a")
headers= "Aa, Ab, Ac, Ad\n"
f.write(headers)
for indaplaybox in playboxes:
Aa = indaplaybox.find('td', attrs = {'style' : 'font-weight: bold;'}).text
c = indaplaybox.find('td', attrs = {'class' : 'tablePlayName'})
cl = c.text.split()
Ab = cl[0] + " " + cl[1]
Ac = cl[2]
Ad = indaplaybox.div.a.text
print("Aa:" + Aa)
print("Ab:" + Ab)
print("Ac:" + Ac)
print("Ad:" + Ad)
with open (filename, "a") as myfile:
myfile.write(Aa + "," + Ab + "," + Ac.replace(",", "|") + "," + Ad + "\n")
f.close()
Я хочу пройтись по индексам плейбокса 3-11.
Я не очень разбираюсь в индексах, поэтому попытался сделать что-то вроде:
p = [str(i) for i in range (3,12)]
indaplaybox = playboxes[p]
for indaplaybox in playboxes:
rest of code
Но это не работает, потому что для большинства, вероятно, очевидно, что индексы списка должны бытьцелые числа.
Я мог бы действительно помочь, подумав, как сделать так, чтобы цикл работал гладко.Спасибо!