2017-02-23 71 views
1

я анализирую веб-страницы с помощью BeautifulSoup:(Python) - Как сохранить текст, извлеченный из HTML таблицы с использованием BeautifulSoup в структурированном списке питона

import requests 
from bs4 import BeautifulSoup 
page = requests.get("webpage url") 
soup = BeautifulSoup(page.content, 'html.parser') 

Я найти таблицу и распечатать текст

Ear_yield= soup.find(text="Earnings Yield").parent 
print(Ear_yield.parent.text) 

А потом я получаю вывод одной строки в таблице

Earnings Yield 
0.01 
-0.59 
-0.33 
-1.23 
-0.11 

Я хотел бы этот выход будет храниться в литий st, чтобы я мог печатать на xls и работать с элементами (для ex if (доходность доходности [0]> доходность дохода [1]). Итак, я пишу:

import html2text 
text1 = Ear_yield.parent.text 
Ear_yield_text = html2text.html2text(pr1) 

list_Ear_yield = [] 
for i in Ear_yield_text : 
list_Ear_yield.append(i) 

Думая, что мой веб-данные вошли в список. Я печатаю четвертый пункт и проверить:

print(list_Ear_yield[3]) 

Я ожидаю, что выход как -0.33, но я получаю

n 

Это означает, что список принимает отдельные символы, а не полное слово: Пожалуйста, дайте мне знаю, где я делаю неправильно

ответ

2

Это потому, что ваш Ear_yield_text является строкой, а не списком. Если предположить, что текст есть новые строки, которые вы можете сделать прямо это:

list_Ear_yield = Ear_yield_text.split('\n') 

Теперь, если вы печатаете list_Ear_yield вы получите этот результат

['Earnings Yield', '0.01', '-0.59', '-0.33', '-1.23', '-0.11'] 
+0

Большое спасибо @Zroq. Это быстро его разрешило. – Stelios