ANpy: Scrape painlessly Assemblée Nationale website
ANpy is a python library for easily scraping data from http://assemblee-nationale.fr website
Forget the ugly html, just get data:
>>> from anpy.dossier import Dossier
>>> url = 'http://www.assemblee-nationale.fr/14/dossiers/republique_numerique.asp'
>>> dossier = Dossier.download_and_build(url)
>>> dossier.title
'Economie : pour une République numérique'
>>> dossier.legislature
14
>>> r.procedure
'PPL'
>>> r.senat_url
'http://www.senat.fr/dossier-legislatif/pjl15-325.html'
>>> r.steps
[{'type': 'AN_PREMIERE_LECTURE', 'acts': [...]}]
Supported Features
ANpy currently provides the following features:
- Amendement parsing
- Amendement search
- Question parsing
- Question search
- Dossier parsing (two differents formats)
- Scrutin parsing
ANpy supports Python 3.5.
Install :
pip install anpy
Documentation
Documentation is available at http://anpy.readthedocs.io/en/latest
CLI
A script anpy-cli is installed with the package, it provides the following commands :
Show an amendement given its url
anpy-cli show_amendement http://www.assemblee-nationale.fr/14/amendements/1847/CION-DVP/CD266.asp
Show amendements summaries after a given date
anpy-cli show_amendements_summary --start-date 2014-06-01
Print amendements order for a given id_dossier and id_examen
anpy-cli show_amendements_order 33299 --id-examen 4073
Show a question
anpy-cli show_question http://questions.assemblee-nationale.fr/q14/14-73499QE.htm
Show a law project (dossier législatif)
Format is like senapy and the Open Data of lafabriquedelaloi.fr
There's more work done on this parser to make it work across many cases
anpy-cli parse http://www.assemblee-nationale.fr/14/dossiers/sante.asp
[
{
"assemblee_id": "14-sante",
"assemblee_legislature": 14,
"assemblee_slug": "sante",
"beginning": "2014-10-15",
"long_title": "Questions sociales et santé : modernisation de notre système de santé",
"steps": [
{
"date": "2014-10-15",
"institution": "assemblee",
"source_url": "http://www.assemblee-nationale.fr/14/projets/pl2302.asp",
"stage": "1ère lecture",
"step": "depot"
},
{
"date": "2015-03-20",
"institution": "assemblee",
"source_url": "http://www.assemblee-nationale.fr/14/ta-commission/r2673-a0.asp",
"stage": "1ère lecture",
"step": "commission"
},
{
"date": "2015-04-14",
"institution": "assemblee",
"source_url": "http://www.assemblee-nationale.fr/14/ta/ta0505.asp",
"stage": "1ère lecture",
"step": "hemicycle"
},
...
Features:
- Merging the law project across legislatures
- Parse from Open Data when available or fallback to scraping HTML
- Returns an array of law projects since a page can contains many law projects (ex: organic + non-organic)
You can also parse many of them by giving a list of urls:
anpy-cli doslegs_urls | anpy-cli parse_many an_doslegs/
Show a law project (with a format is similar to the AN Open Data)
This parser is still a work-in-progress
anpy-cli show_dossier http://www.assemblee-nationale.fr/14/dossiers/sante.asp
{
"legislature": "14",
"procedure": "PJL",
"senat_url": "http://www.senat.fr/dossier-legislatif/pjl14-406.html",
"steps": [
{
"acts": [
{
"date": "2014-10-15T00:00:00",
"type": "DEPOT_INITIATIVE",
"url": "http://www.assemblee-nationale.fr/14/projets/pl2302.asp"
},
{
"type": "ETUDE_IMPACT",
"url": "http://www.assemblee-nationale.fr/14/projets/pl2302-ei.asp"
},
{
"date": "2015-03-16T00:00:00",
"type": "PROCEDURE_ACCELEREE"
},
{
"date": "2015-03-20T00:00:00",
"type": "DEPOT_RAPPORT",
"url": "http://www.assemblee-nationale.fr/14/rapports/r2673.asp"
},
{
"date": "2015-03-24T00:00:00",
"type": "TEXTE_COMMISSION",
"url": "http://www.assemblee-nationale.fr/14/ta-commission/r2673-a0.asp"
},
{
"date": "2015-02-11T00:00:00",
"type": "DEPOT_RAPPORT",
"url": "http://www.assemblee-nationale.fr/14/rap-info/i2581.asp"
},
{
...
Find all the dossier urls
anpy-cli doslegs_urls
Show a scrutin
anpy-cli show_scrutin http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/14/(num)/1212
Running the tests
pip install -U -r test_requirements.txt
pip install -e .
pycodestyle --exclude=tests,docs .
flake8 --exclude=tests,docs .
py.test --cov=anpy
Metadata
Release files for anpy 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| anpy-0.2.1.tar.gz | 25.6 kB | Without provenance | Details for anpy-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| anpy-0.2.1-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for anpy-0.2.1-py2.py3-none-any.whl |
Total release size: 53.1 kB
Release files / anpy-0.2.1.tar.gz
| Download URL | anpy-0.2.1.tar.gz |
|---|---|
| Size | 25.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7e2bcb45e0dd0192bff190297bb95042d1193d2e2ebba44367f0e7528c11b39
|
|
BLAKE2b-256 checksum How to use checksums |
25a1ad399d963f865408f72867da908d6265050fb97849eea170011e9c91b22c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9
|
Release files / anpy-0.2.1-py2.py3-none-any.whl
| Download URL | anpy-0.2.1-py2.py3-none-any.whl |
|---|---|
| Size | 27.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
4139bfd47a5a5a1bf6f80d20b04eecc35c237a3eeaee33e8069bcd809b11356a
|
|
BLAKE2b-256 checksum How to use checksums |
16a837746c5beb77c06902372662d20f0ba743c8aee72ebdba2c2295eeae7176
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.9
|
Security for anpy 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.