Парсинг данных с "+" и "-"
Парсер неправильно выводит данные за день, содержащие "+" и "-". В чём может быть проблема?
Вот мои код:
import requests
from bs4 import BeautifulSoup
url = 'https://smart-lab.ru/q/portfolio/jokerv4/8481/'
sourse = requests.get(url)
new_news = []
soup = BeautifulSoup(sourse.text, 'html.parser')
news = soup.find('table', {'csv-download-data': 'russian_shares'})
news = news.findAll('tr')
n = ""
for i in range(len(news) - 1):
if news[i].find('a') is not None:
if news[i + 1].find('td', {'class': 'up'}) is None:
n = news[i + 1].find('td', {'class': 'down'}).text
if news[i + 1].find('td', {'class': 'down'}) is None:
n = news[i + 1].find('td', {'class': 'up'}).text
print(n)
w = news[i + 1].find('a').text + ":" + news[i + 1].find('td', {'class': 'price'}).text + n
# может быть down или up исправить это
w = w.split()
w = ''.join(w)
new_news.append(w)
for i in range(len(new_news)):
print(new_news[i])
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
Не знаю Вашей конечной цели, но возможно такой способ Вам подойдет:
# Если не установлены pip install pandas lxml openpyxl
import pandas as pd
url = 'https://smart-lab.ru/q/portfolio/jokerv4/8481/'
pd.read_html(url)[1][['Название', 'Прибыль ₽', 'Изм, %']].to_excel('test.xlsx', index=False)
На выходе дает:
UPD Если следовать логике Вашего способа вывода данных то что-то вроде этого
url = 'https://smart-lab.ru/q/portfolio/jokerv4/8481/'
df = pd.read_html(url)[1][['Название', 'Прибыль ₽', 'Изм, %']]
for row in df.iloc:
print(*row)
title, profit, diff = row
# some actions with variables
