Wyjście danych jest poziome z poniższego kodu, czy można było w pionie, wielkie dzięki!

from bs4 import BeautifulSoup
import urllib2

url1 = "url"

content1 = urllib2.urlopen(url1).read()
soup = BeautifulSoup(content1,"lxml")

div = soup.find("form", {"name": "SelHorse"})
rows = div.findAll('table')[6].findAll('tr')

for row in rows:
    print (row.text)
1
Mary 4 czerwiec 2018, 10:28

3 odpowiedzi

Najlepsza odpowiedź

Możesz znaleźć wszystkie znaczniki td, a następnie użyj str.join.

Np .:

for row in rows:
    if row:
        print( " ".join(td.text.strip() for td in row.findAll("td") if td) )
1
Rakesh 4 czerwiec 2018, 07:37

Każde indywidualne oświadczenie druku w pętli utworzy nową linię. Jeśli chcesz napisać wszystko w jednej linii (zakładam, że to masz na myśli), musisz zebrać wszystko w jednym sznurku. Wymień swoją pętlę z następującymi:

output = ''
for row in rows:
    output += row
print row
0
Dux 4 czerwiec 2018, 07:33

Użyj tego w instrukcji drukowania:

print ((row.text).strip())

Spowoduje to usunięcie znaków nowych linii w swoim wejściu, a zatem wyjście nie będzie miało puste linie pomiędzy.

Dla przecinków, co możesz zrobić, to:

for row in rows:
    print ((row.text).strip() + ",")

Uwaga: To wydrukuje "," nawet w ostatniej linii. Aby uniknąć, że po prostu drukuje tę linię oddzielnie. tj. na zewnątrz pętli.

1
PKBEST 4 czerwiec 2018, 07:42