Красивый стол для чистки супов - PullRequest
0 голосов
/ 08 октября 2018

У меня есть небольшой кусочек кода для очистки данных таблицы с веб-сайта, а затем для отображения в формате CSV.Проблема в том, что цикл for печатает записи несколько раз.Я не уверен, связано ли это с тегом
.Кстати, я новичок в Python.Спасибо за вашу помощь!

#import needed libraries
import urllib
from bs4 import BeautifulSoup
import requests
import pandas as pd
import csv
import sys
import re


# read the data from a URL
url = requests.get("https://www.top500.org/list/2018/06/")

# parse the URL using Beauriful Soup
soup = BeautifulSoup(url.content, 'html.parser')

newtxt= ""
for record in soup.find_all('tr'):
    tbltxt = ""
    for data in record.find_all('td'):
        tbltxt = tbltxt + "," + data.text
        newtxt= newtxt+ "\n" + tbltxt[1:]
        print(newtxt)

Ответы [ 2 ]

0 голосов
/ 08 октября 2018
from bs4 import BeautifulSoup
import requests

url = requests.get("https://www.top500.org/list/2018/06/")
soup = BeautifulSoup(url.content, 'html.parser')
table = soup.find_all('table', attrs={'class':'table table-condensed table-striped'})
for i in table:
    tr = i.find_all('tr')
    for x in tr:
        print(x.text)

Или лучший способ разобрать таблицу с помощью панд

import pandas as pd
table = pd.read_html('https://www.top500.org/list/2018/06/', attrs={
    'class': 'table table-condensed table-striped'}, header = 1)
print(table)
0 голосов
/ 08 октября 2018

Он печатает большую часть данных несколько раз, потому что переменная newtext, которую вы печатаете после получения текста каждого <td></td>, просто накапливает все значения.Самый простой способ заставить это работать, вероятно, состоит в том, чтобы просто переместить линию print(newtxt) за пределы обоих циклов for, то есть оставить ее полностью без отступов.Затем вы должны увидеть список всего текста, начиная с каждой строки в новой строке и каждого отдельного элемента в строке, разделенных запятыми.

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