2016-08-01 18 views
0

Ich benutze BS4, um Text zu kratzen. Meine aktuelle Ausgabe des Textes hat 7 verschiedene Felder, die ich in 7 verschiedene Listen eintragen möchte. Mein Code ist wie folgt:Trennen Sie mehrzeiligen Text in separate Listen

from bs4 import BeautifulSoup 
import requests 


urlYears = ['2012'] 
for year in urlYears: 
    soup = BeautifulSoup(requests.get("https://en.wikipedia.org/wiki/" + "2012" + "_NFL_Draft").content,"html.parser") 
    table = soup.select_one("table.wikitable.sortable") 

    for row in table.select("tr + tr"): 
     tds=row.text 
     print (tds) 

Die gedruckte Ausgabe wie folgt angezeigt wird:

7^ 
252 
St. Louis Rams 
Richardson, DarylDaryl Richardson  
RB 
Abilene Christian 
Lone Star 




7^ 
253 
Indianapolis Colts 
Harnish, ChandlerChandler Harnish  
QB 
NIU 
MAC 

Wie kann ich Listen von jedem von diesen erstellen? Das ultimative Ziel ist es, als CSV zu exportieren.

Antwort

0

Ein trivialer Ansatz wäre nur split() der Text an den Zeilenenden?

import os 

from bs4 import BeautifulSoup 
import requests 

soup = BeautifulSoup(requests.get("https://en.wikipedia.org/wiki/2012_NFL_Draft").content, "html.parser") 
table = soup.select_one("table.wikitable.sortable") 

for row in table.select("tr + tr"): 
    tds=row.text.split(os.linesep) 
    print tds 

Yields

[u'', u'', u'1', u'1', u'Indianapolis Colts', u'Luck, AndrewAndrew Luck\xa0\u2020', u'QB', u'Stanford', u'Pac-12', u'', u''] 
[u'', u'', u'1', u'2', u'Washington Redskins', u'Griffin III, RobertRobert Griffin III\xa0\u2020', u'QB', u'Baylor', u'Big 12', u'from St. Louis\xa0[R1 - 1];', u'2011 Heisman Trophy winner\xa0[N 2]', u''] 
[u'', u'', u'1', u'3', u'Cleveland Browns', u'Richardson, TrentTrent Richardson\xa0', u'RB', u'Alabama', u'SEC', u'from Minnesota\xa0[R1 - 2]', u''] 
[u'', u'', u'1', u'4', u'Minnesota Vikings', u'Kalil, MattMatt Kalil\xa0\u2020', u'OT', u'USC', u'Pac-12', u'from Cleveland\xa0[R1 - 3]', u''] 
[u'', u'', u'1', u'5', u'Jacksonville Jaguars', u'Blackmon, JustinJustin Blackmon\xa0', u'WR', u'Oklahoma State', u'Big 12', u'from Tampa Bay\xa0[R1 - 4]', u''] 
... 

HTH dtk

Edit: Sie können .splitlines() eigentlich nur haben Python die Zeilenumbrüche korrekt verarbeiten. Speichert auch den os Import.

Verwandte Themen