String indices must be integers (спасите меня от этой ошибки) - Python
Формулировка задачи:
Всем привет,вообщем написал парсер , и долго боролся с картинкой(не мог подтянуть), только поборол эту проблему , как выскочила другая.
теперь не могу записать данные в ексель из-за
Именно на этой строке вылетает ошибка
Подскажите что тут можно сделать , я читал про обходы строк , но толи не до конца понимаю толи мне тут это не подходит. Вообщем подскажите что мне с этим делать.
А ну и сами ошибки
string indices must be integers
Вот весь код
Листинг программы
- url = 'https://www.lampa.kiev.ua/ua/katalog/searchANJA+X'
- def get_html(url):
- html = requests.get(url)
- return html
- def get_page_data(html):
- tf = ''
- lamp = tf
- socle = tf
- group = 'Люстри'
- country = 'Чехія'
- design = 'класичний'
- soup = BeautifulSoup(html.text)
- info = soup.find('div', class_='catalog_hr')#.find_all('b')[5].text
- tovname = soup.find('div', class_='catalog_tovname').find('a').text
- index = re.findall('(\d+)',tovname )
- for ad in info:
- try:
- heightm = ad.find('b')[2].text
- except:
- heightm = ''
- try:
- width = ad.find('b')[3].text
- except:
- width = ''
- try:
- in_lamp = ad.find('b')[4]
- lamp = in_lamp.split('x')[0]
- socle = in_lamp.split('x')[1]
- except:
- in_lamp = ''
- try:
- color_stl = ad.find('b')[7].text
- except:
- color_stl = ''
- try:
- type_stl = ad.find('b')[8].text
- except:
- type_stl = ''
- try:
- color_lamp = ad.find('b')[9].text
- except:
- color_lamp = ''
- try:
- type_lamp = ad.find('b')[10].text
- except:
- type_lamp = ''
- try:
- maker = ad.find('b')[12].text
- except:
- maker = ''
- data = {'index': index,
- 'name': tf,
- 'group': group,
- 'description': tf,
- 'maker': maker,
- 'country': country,
- 'design': design,
- 'lamp': lamp,
- 'socle': socle,
- 'color_lamp': color_lamp,
- 'type_lamp': type_lamp,
- 'color_stl': color_stl,
- 'type_stl': type_stl,
- 'heightm': heightm,
- 'width': width,
- 'depth':heightm}
- return data
- def export_excel(filename , datas):
- workbook = xlsxwriter.Workbook(filename)
- worksheet = workbook.add_worksheet()
- field_names = ('код товару',
- 'назва серії, модель',
- 'група товару для сайту',
- 'опис',
- 'виробник',
- 'країна',
- 'дизайн',
- 'кількість патронів',
- 'цоколь',
- 'колір плафона',
- 'матеріал плафона',
- 'колір арматури',
- 'матеріал арматури',
- 'розмір (см) Ш',
- 'розмір (см) В',
- 'розмір (см) Г',
- 'фото')
- for i ,field in enumerate(field_names):
- worksheet.write(0, i, field)
- fields = ('index', 'name', 'group',
- 'description', 'maker','country',
- 'design', 'lamp', 'socle', 'color_lamp',
- 'type_lamp','color_stl','type_stl',
- 'heightm','width','depth')
- for row, data in enumerate(datas, start=1):
- print(row)
- print(data)
- for col, field in enumerate(fields):
- print(col)
- print(field)
- worksheet.write(row, col, data[field])
- workbook.close()
- def main():
- url = 'https://www.lampa.kiev.ua/ua/katalog/searchANJA+X'
- html = get_html(url)
- datas = get_page_data(html)
- print(datas)
- export_excel('data.xlsx', datas)
Листинг программы
- worksheet.write(row, col, data[field])
Листинг программы
- Traceback (most recent call last):
- File "C:/Users/игор/Desktop/4Wscript/test.py", line 135, in <module>
- main()
- File "C:/Users/игор/Desktop/4Wscript/test.py", line 132, in main
- export_excel('data.xlsx', datas)
- File "C:/Users/игор/Desktop/4Wscript/test.py", line 123, in export_excel
- worksheet.write(row, col, data[field])
- TypeError: string indices must be integers
Решение задачи: «String indices must be integers (спасите меня от этой ошибки)»
textual
Листинг программы
- tovname = soup.find('div', class_='catalog_tovname').find('a').text
- index = re.findall('(\d+)',tovname )
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д