Na dzień 31.07.2013 w wykazie podmiotów http://www.bip.gov.pl/subjects/index/14013 znajdowało się 68 OPP.
import requests from bs4 import BeautifulSoup import dataset from itertools import imap,islice import requests_cache requests_cache.configure('/tmp/http_cache') db = dataset.connect('sqlite:///subjects.db') table = db['opp'] def grab(krs , s=requests.Session()): print "Grab data for ",krs r = s.post('http://sprawozdaniaopp.mpips.gov.pl/Search/Details/%s' % ( str(krs).strip(),) ) soup = BeautifulSoup(r.text) data = dict([map(lambda x:x.text.strip(),tr.findAll('td')) for tr in soup.table.findAll('tr')]) data['KRS'] = krs print data return data def load(filename): s = requests.Session() with open(filename) as fp: for x in fp: yield grab(x,s) table.insert_many(load('numery_krs.txt'))
Powyższy skrypt potrzebuje informacji o podmiotach do scrapowania. Przyjmuje je jako plik 1 numer - 1 linia.
Dane wejściowe pobrane z http://www.mpips.gov.pl/bip/wykaz-organizacji-pozytku-publicznego/ przetworzone do właściwego formatu dostarczyły danych.