выскабливание таблицы с нежелательными пустыми строками в python - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в питоне, у которого проблемы с чисткой таблицы. Моя желаемая цель - не иметь пустого места в выводе. Мой код:

import requests
from bs4 import BeautifulSoup

# I am only interested in some particular blocks from the bitcoin blockchain
url = "https://blockchain.info/block-height/521578"

# Getting table from the url
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
stat_table = soup.find_all('table', class_ = 'table table-striped')
stat_table = stat_table[0]

for row in stat_table.find_all("tr"):
    for cell in row.find_all("td")[1:]: # look that I am interested only in the 2nd column
        print(cell.text)

С предыдущим кодом я получаю следующее:

521578 (Main chain)
0000000000000000002809c9ae7546964580751b506e070f15002b1c1fdd66b3

0000000000000000002d4f2f654945fda08931355e9af871a8c2135a25da9cb6
00000000000000000023583cc0df49783e50c93d807c405524168016c84c0c2a
2018-05-07 06:56:50

2018-05-07 06:56:50
BTC.com

4,022,059,196,164.95

390462291
452
5,440.06056147 BTC
233.87351861 BTC
342.123 KB
0x20000000
ee7c7e2cde5e0f3567c9f635549ec62365e2ac45da517f41cf6c32787c3d8b4d
3688672863
12.5 BTC
0.11100607 BTC

Но эти пустые строки вызывают у меня проблемы, когда я хочу сохранить файл .csv впоследствии. Вы знаете, как избавиться от этих пустых строк?

Если я сделаю небольшое изменение в коде, я получу данные так, как хочу, за исключением того, что мне нужен не тот столбец (мне нужен только второй столбец):

for row in stat_table.find_all("tr"):
    for cell in row.find_all("td")[:1]: # Here is the change
        print(cell.text)

Вывод с изменением (посмотрите, нет ли пустых строк, но не в нужном столбце):

Height
Hash
Previous Block
Next Blocks
Time
Received Time
Relayed By
Difficulty
Bits
Number Of Transactions
Output Total
Estimated Transaction Volume
Size
Version
Merkle Root
Nonce
Block Reward
Transaction Fees

Заранее спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Проверьте, не требуется ли значение перед печатью.

for row in stat_table.find_all("tr"):
    for cell in row.find_all("td")[1:]:
        if cell.text != "":
            print(cell.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...