Я протестировал небольшой пример, openpyxl работает нормально.
Но у меня проблема в основном проекте.
Есть список страниц, сгенерированных BeautifulSoup, я могу узнать имя и цену активов с функцией печати. Когда я пытаюсь вставить эти данные в файл excel с l oop, программа вылетает, файл создается, но он поврежден.
import requests, sys, bs4, locale, re, openpyxl, os
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
from time import sleep
req = Request('https://coinmarketcap.com/exchanges/beaxy/', headers={'User-Agent': 'Mozilla/5.0'})
html_page = urlopen(req).read()
soup = BeautifulSoup(html_page, 'html.parser')
#preparing an excel file
wb = openpyxl.Workbook()
sheet = wb['Sheet']
#all beaxy exchange listed coins
#coinmarketcap URL pages of these coins
cryptoUrls = []
for url in soup.findAll('a', attrs={'title': True,'href': re.compile("^/currencies/")}):
cryptoUrls.append('https://coinmarketcap.com' + url.get('href'))
# removing duplicate items
cryptoUrls = list(dict.fromkeys(cryptoUrls))
# Data of coinmarketcap URLs generated by BeautifulSoup
soup_list = []
for coinUrl in cryptoUrls:
resp = requests.get(coinUrl, headers={'User-Agent': 'Mozilla/5.0'})
if resp.status_code == 200:
soup_list.append(bs4.BeautifulSoup(resp.text, 'html.parser'))
sleep(2)
locale.setlocale(locale.LC_ALL, 'en_US.UTF8')
for idx, cryptoCoin in enumerate(soup_list,start=2):
rowB = 'B{0}'.format(idx)
rowC = 'C{0}'.format(idx)
sheet[rowB] = cryptoCoin.body.h1(string=True)[0].strip()
sheet[rowC] = locale.atof(cryptoCoin.select('.cmc-details-panel-price__price')[0].text.strip('$'))
else:
wb.save('testcr.xlsx')
Я не смог найти здесь ошибку. Буду очень рад, если вы поможете с этим.
Спасибо