Как экспортировать только название акции и текущую цену в файл .txt без каких-либо дополнительных строк или нежелательных данных между ними? - PullRequest
0 голосов
/ 11 октября 2019

Я снимаю цены на живые акции с веб-сайта, используя BeautifulSoup, и экспортирую его в текстовый файл, используя Python. Код возвращает цену вместе с дополнительными строками и информацией.

Как выбрать только конкретную информацию для экспорта в файл .txt?

Я еще не очень хорошо разбираюсь в питоне. Пробовал поиск в стеке, но не смог найти ничего подходящего для меня.

from bs4 import BeautifulSoup
import requests
import time


while True:

    result = requests.get("https://liveindex.org/s&p-futures/")
    src = result.content
    soup = BeautifulSoup(src, 'lxml')
    table_body=soup.find('tbody')
    rows = table_body.find_all('tr')

    for row in rows:
        cols=row.find_all('td')
        cols=[x.text.strip() for x in cols]
        print(cols)
        file = open("test.txt", "a")
        file.write(str(cols))
        file.write("\n")
        file.close()

        time.sleep(10) # this will wait for 10 seconds

Текущий код экспортирует данные, как показано ниже:

[]

['S&P 500 FUTURES', '2,948.50', '+29.50', '+1.01%', '2,953.62', '2,882.12']

['Open Last Trade : 16:38', 'US Time : Thu Oct 10 2019 16:38']

[]

['S&P 500 FUTURES', '2,948.50', '+29.50', '+1.01%', '2,953.62', '2,882.12']

['Open Last Trade : 16:38', 'US Time : Thu Oct 10 2019 16:38']

[]

Что мне нужно (без пустых строк между ними):

'S&P 500 FUTURES', '2,948.50'

'S&P 500 FUTURES', '2,949.80'

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

cols - список строк. Вам нужно решить, какие строки вы хотите записать в файл. Например, cols[0] вернет 'S & P 500 FUTURES'

0 голосов
/ 11 октября 2019

use, if оператор для проверки cols не пустой, и объединение str для создания разделенной запятыми строки из списка cols, как показано ниже:

from bs4 import BeautifulSoup
import requests
import time

while True:

    result = requests.get("https://liveindex.org/s&p-futures/")
    src = result.content
    soup = BeautifulSoup(src, 'lxml')
    table_body=soup.find('tbody')
    rows = table_body.find_all('tr')    
    for row in rows:
        cols=row.find_all('td')
        cols = [x.text.strip() for x in cols]
        if cols:
            result = ", ".join(cols)
            print(result)
            with open("test.txt", "a") as f:
                f.write(result)
                f.write("\n")

        time.sleep(10) # this will wait for 10 seconds

Примечание: я также использовал ключевое слово with, которое по сути заботится об открытии и закрытии объекта файла автоматически.

Подробнее об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...