2017-09-03 4 views
-1

Je souhaite ignorer la première ligne d'en-tête de mes données effacées, je me bats avec l'écriture de code pour cela, toute aide serait appréciée.Comment ignorer la première ligne d'en-tête de la table pendant un scrap

Le code que je suis venu avec jusqu'à présent:

import csv 
import urllib.request 
from bs4 import BeautifulSoup 
soup = BeautifulSoup(urllib.request.urlopen("http://tis.nhai.gov.in/TollInformation?TollPlazaID=236").read(),'lxml') 
tbody = soup('table' ,{"class":"tollinfotbl"})[0].find_all('tr') 
for row in tbody: 
    cols = row.findChildren(recursive=False) 
    cols = [ele.text.strip() for ele in cols] 
+0

'tbody = soupe ('table', { "classe": "tollinfotbl" }) [0] .find_all ('tr') [1:] 'probablement .. –

+0

son fonctionnement pour le firstheader, si je veux sauter tout en-tête de temps, tout en imprimant la table ?? Je veux dire toute la ligne d'en-tête – Prashant

+0

ne comprends pas. C'est juste une table, donc elle devrait avoir un seul en-tête. À moins que je ne te comprenne mal. –

Répondre

0

exécuter. Vous n'aurez plus ces parenthèses vides.

import urllib.request ; from bs4 import BeautifulSoup 

soup = BeautifulSoup(urllib.request.urlopen("http://tis.nhai.gov.in/TollInformation?TollPlazaID=236").read(),'lxml') 
table = soup.find('table' ,{"class":"tollinfotbl"}) 
rows = [[ele.text.strip() for ele in item.find_all("td")] 
     for item in table.find_all("tr")] 
for data in rows: 
    print(' '.join(data)) 

Et avec module demande si vous voulez:

import requests 
from bs4 import BeautifulSoup 
soup = BeautifulSoup(requests.get("http://tis.nhai.gov.in/TollInformation?TollPlazaID=236").text,'lxml') 
titles = soup.select("table.tollinfotbl")[0] 
list_row =[[tab_d.text.strip() for tab_d in item.select('td')] 
      for item in titles.select('tr')] 

for data in list_row: 
    print(' '.join(data)) 

Ceci est le résultat:

45.00 70.00 1565.00 25.00 

75.00 115.00 2525.00 40.00 

160.00 240.00 5290.00 80.00 

175.00 260.00 5770.00 85.00 

250.00 375.00 8295.00 125.00 

250.00 375.00 8295.00 125.00 

305.00 455.00 10100.00 150.00 
+0

Bonjour, merci. pouvez-vous plz fournir quelques notes liées à ce .. Je suis débutant et je veux en savoir plus sur la mise au rebut – Prashant

0

C'est vraiment mauvais et plus excessif, mais la voici:

row_num = 0 
for row in tbody: 
    if row_num > 0: 
     cols = row.findChildren(recursive=False) 
     cols = [ele.text.strip() for ele in cols] 
    row_num = row_num + 1