from bs4 import BeautifulSoup import requests import dataset db = dataset.connect('sqlite:///:memory:') table = db['sady'] s = requests.Session() r = s.get('http://bip.ms.gov.pl/pl/rejestry-i-ewidencje/lista-sadow-powszechnych/list,1.html') def parse(text): soup = BeautifulSoup(text) tbl = soup.find('table',attrs={'class':['tabelkaszara']}) header = map(lambda x: x.text.strip(), tbl.tr.findAll('th')) for tr in tbl.findAll('tr'): row = [td.text.strip() for td in tr.findAll('td')] yield dict(zip(header, row)) for i in xrange(1,47): r = s.get('http://bip.ms.gov.pl/pl/rejestry-i-ewidencje/lista-sadow-powszechnych/list,%s.html' % (str(i))) for row in parse(r.text): table.insert(row) print row dataset.freeze(table.all(), filename='sady.csv', format='csv')
Jam potrzebował ino listy nazw sądów. Jeżeli ktoś chce udoskonalać - droga wolna.
Wynik: sady.csv ~~DISCUSSION~~