{ "info": { "author": "Phan Hoang", "author_email": "phan.huy.hoang@framgia.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "framler\n=======\n\n[![PyPi](https://img.shields.io/pypi/v/framler.svg)](https://pypi.python.org/pypi/framler) \n[![Build Status](https://travis-ci.org/huyhoang17/framler.svg?branch=master)](https://travis-ci.org/huyhoang17/framler) \n[![Coverage Status](https://coveralls.io/repos/github/huyhoang17/framler/badge.svg?branch=master)](https://coveralls.io/github/huyhoang17/framler?branch=master)\n[![Updates](https://pyup.io/repos/github/huyhoang17/framler/shield.svg)](https://pyup.io/repos/github/huyhoang17/framler/) \n[![Python 3](https://pyup.io/repos/github/huyhoang17/framler/python-3-shield.svg)](https://pyup.io/repos/github/huyhoang17/framler/)\n[![Documentation Status](https://readthedocs.org/projects/framler/badge/?version=latest)](https://framler.readthedocs.io/en/latest/?badge=latest)\n\n\nPython package for crawler data and extract main information \n\n- Free software: MIT license\n- Documentation: https://framler.readthedocs.io.\n\n\nFeatures\n--------\n\n### Package to crawl and extract main information for websites\n\n- Some Vietnamese online newspapers:\n - Dan Tri: https://dantri.com.vn/\n - VnExpress: https://vnexpress.net/\n - vietnamnet: https://vietnamnet.vn/\n - Tuoi Tre: https://tuoitre.vn/\n - Lao Dong: https://laodong.vn/\n - Thanh Nien: https://thanhnien.vn/\n - VOV: https://vov.vn/\n - Zing: https://news.zing.vn/\n - .... \n\n- Main information to extract:\n - Url\n - Title\n - Text (content)\n - Authors\n - Publish date\n - Image urls\n - Tags\n\n- Additional information:\n - Extract keyword (TODO)\n - Summary content (TODO)\n\n- Additional features:\n - Export data (text, image) to file, database (csv, mongo, ....) (TODO)\n - Multiprocessing\n - Render and crawl website contains Js (TODO)\n - Define base solution to extract main information from website (title, text, author, published_data, image_urls, tags)\n - Auto extract roadmaps (rss, sitemap) of some common Vietnamese online newspapers. Support export data to database, multiprocessing (TODO)\n - Add auto extract roadmap (rss, sitemap) mechanism (TODO)\n - Add cronjob to automatically crawler specific websites, checking duplicate and export data to database (TODO)\n\n- Folder structure\n```\n \u251c\u2500\u2500 _base.py - base abstract class for extracting, parsing and exporting data\n \u251c\u2500\u2500 articles.py - contain article's meta information \n \u251c\u2500\u2500 cleaners.py - base object to clean article's content, include: html, text, stopword, ...\n \u251c\u2500\u2500 extractors.py - base extractor to auto extract main information for any articles, must include: url, title, content, author\n \u251c\u2500\u2500 parsers.py - base class to define some short methods to extract information from html elements, ex: regex define; find element by tag, id, class, ...\n \u251c\u2500\u2500 images.py - define common pattern to extract and download images\n \u251c\u2500\u2500 logs.py - base logging module\n \u251c\u2500\u2500 utils.py - define some common and useful methods\n \u251c\u2500\u2500 config.yaml - define meta information for each field \n \u2514\u2500\u2500 html.yaml - define some common values for specific tags\n```\n\n- Some prerequisite libraries:\n - selenium\n - requests\n - beautifulsoup4\n - lxml\n - datefinder\n\n### Command\n\n```\npip install framler\n```\n\nor\n\n```\npip install --upgrade framler\n```\n\n### Usage\n\n- For Vietnamese online newspapers, support (a.k.a parser name):\n - dantri\n - vnexpress\n - vietnamnet\n - tuoitrevn\n - thanhnien\n\n```\nIn [1]: import framler \n\nIn [2]: dt = framler.NewspapersParser(\"thanhnien\") \n2829it [00:30, 91.76it/s] \ngeckodriver\n2019-02-19 14:04:24,324 - framler.utils - INFO - Untar completed!\nINFO:framler.utils:Untar completed!\n\nIn [3]: url = \"https://thanhnien.vn/thoi-su/ngan-hang-vdb-sai-pham-gi-tai-du-an-gang-thep-nghin-ti-dap-chieu-1054082.html\" \n\nIn [4]: article = dt.parse(url) \n\nIn [5]: article.title \nOut[5]: 'Ng\u00e2n h\u00e0ng VDB sai ph\u1ea1m g\u00ec t\u1ea1i d\u1ef1 \u00e1n gang th\u00e9p ngh\u00ecn t\u1ec9 \u2018\u0111\u1eafp chi\u1ebfu\u2019?'\n\nIn [6]: article.text \nOut[6]: '\u0110\u1ec1 ngh\u1ecb B\u1ed9 T\u00e0i ch\u00ednh x\u1eed l\u00fd tr\u00e1ch nhi\u1ec7m t\u1ea1i VDB\\n\u0110\u00e2y l\u00e0 s\u1ed1 ti\u1ec1n n\u1eb1m trong c\u00e1c g\u00f3i th\u1ea7u m\u00e0 Thanh tra Ch\u00ednh ph\u1ee7 v\u1eeba k\u1ebft lu\u1eadn sai ph\u1ea1m, th\u1ea5t tho\u00e1t t\u1ea1i d\u1ef1 \u00e1n m\u1edf r\u1ed9ng s\u1ea3n xu\u1ea5t giai \u0111o\u1ea1n 2\\xa0c\u1ee7a C\u00f4ng ty c\u1ed5 ph\u1ea7n gang th\u00e9p Th\u00e1i Nguy\u00ean (TISCO).\\nD\u1ef1 \u00e1n c\u00f3 t\u1ed5ng m\u1ee9c \u0111\u1ea7u t\u01b0 h\u01a1n 3.800 t\u1ec9 \u0111\u1ed3ng, sau 5 n\u0103m tri\u1ec3n khai \u0111\u1ed9i v\u1ed1n l\u00ean t\u1edbi 8.104 t\u1ec9 \u0111\u1ed3ng. Sai ph\u1ea1m x\u1ea3y ra \u1edf t\u1ea5t c\u1ea3 c\u00e1c kh\u00e2u, c\u00f3 li\u00ean quan \u0111\u1ebfn tr\u00e1ch nhi\u1ec7m c\u1ee7a TISCO, T\u1ed5ng C\u00f4ng ty th\u00e9p (VNS), B\u1ed9 C\u00f4ng th\u01b0\u01a1ng...\\nNh\u00e0 m\u00e1y \u0111\u00e3 \"\u0111\u1eafp chi\u1ebfu\" t\u1eeb n\u0103m 2013 \u0111\u1ebfn nay, v\u1edbi kho\u1ea3n l\u00e3i vay ng\u00e2n h\u00e0ng ph\u1ea3i tr\u1ea3 g\u1ea7n 40 t\u1ec9 \u0111\u1ed3ng/th\u00e1ng. Hai ng\u00e2n h\u00e0ng li\u00ean quan, gi\u1ea3i ng\u00e2n cho d\u1ef1 \u00e1n n\u00e0y g\u1ed3m VDB v\u00e0 Ng\u00e2n h\u00e0ng C\u00f4ng th\u01b0\u01a1ng (Vietinbank). Theo Thanh tra ch\u00ednh ph\u1ee7, \u0111\u1ed1i v\u1edbi VDB, Chi nh\u00e1nh Th\u00e1i Nguy\u00ean, tr\u00ean c\u01a1 s\u1edf \u0111\u1ec1 ngh\u1ecb c\u1ee7a TISCO, VDB Chi nh\u00e1nh Th\u00e1i Nguy\u00ean \u0111\u00e3 gi\u1ea3i ng\u00e2n cho T\u1ed5ng C\u00f4ng ty c\u1ed5 ph\u1ea7n X\u00e2y d\u1ef1ng c\u00f4ng nghi\u1ec7p Vi\u1ec7t Nam (Vinaincon), c\u00e1c nh\u00e0 th\u1ea7u ph\u1ee5 kh\u00e1c 757 t\u1ec9 \u0111\u1ed3ng theo \u0111\u01a1n gi\u00e1 \u0111i\u1ec1u ch\u1ec9nh kh\u00f4ng \u0111\u00fang H\u1ee3p \u0111\u1ed3ng EPC s\u1ed1 01#. Theo Quy\u1ebft \u0111\u1ecbnh s\u1ed1 1515/Q\u0110-TTg, VDB l\u00e0 ng\u00e2n h\u00e0ng ch\u00ednh s\u00e1ch do nh\u00e0 n\u01b0\u1edbc n\u1eafm gi\u1eef 100% v\u1ed1n \u0111i\u1ec1u l\u1ec7. VDB \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng t\u1ef7 l\u1ec7 d\u1ef1 tr\u1eef b\u1eaft bu\u1ed9c b\u1eb1ng 0% v\u00e0 kh\u00f4ng ph\u1ea3i tham gia b\u1ea3o hi\u1ec3m ti\u1ec1n g\u1eedi. Do ho\u1ea1t \u0111\u1ed9ng c\u1ee7a VDB kh\u00f4ng v\u00ec m\u1ee5c \u0111\u00edch l\u1ee3i nhu\u1eadn n\u00ean \u0111\u01b0\u1ee3c ng\u00e2n s\u00e1ch nh\u00e0 n\u01b0\u1edbc c\u1ea5p b\u00f9 ch\u00eanh l\u1ec7ch l\u00e3i su\u1ea5t v\u00e0 ph\u00ed qu\u1ea3n l\u00fd, \u0111\u01b0\u1ee3c Ch\u00ednh ph\u1ee7 b\u1ea3o \u0111\u1ea3m kh\u1ea3 n\u0103ng thanh to\u00e1n, \u0111\u01b0\u1ee3c mi\u1ec5n n\u1ed9p thu\u1ebf v\u00e0 c\u00e1c kho\u1ea3n n\u1ed9p ng\u00e2n s\u00e1ch nh\u00e0 n\u01b0\u1edbc. V\u1ed1n \u0111i\u1ec1u l\u1ec7 c\u1ee7a VDB 15.086 t\u1ec9 \u0111\u1ed3ng v\u00e0 d\u1ef1 ki\u1ebfn t\u0103ng l\u00ean 30.000 t\u1ec9 \u0111\u1ed3ng v\u00e0o n\u0103m 2020. T\u1ea1i h\u1ee3p \u0111\u1ed3ng EPC 01#, Vinaincon sau khi tr\u1edf th\u00e0nh nh\u00e0 th\u1ea7u ph\u1ee5, \u0111\u01b0\u1ee3c giao th\u1ef1c hi\u1ec7n thi c\u00f4ng v\u1edbi gi\u00e1 tr\u1ecb t\u1ea1m t\u00ednh h\u01a1n 764 t\u1ec9 \u0111\u1ed3ng, \u0111\u00e3 l\u1eadp t\u1ee9c k\u00fd h\u1ee3p \u0111\u1ed3ng giao vi\u1ec7c v\u1edbi 29 nh\u00e0 th\u1ea7u kh\u00e1c v\u1edbi gi\u00e1 tr\u1ecb h\u01a1n 505 t\u1ec9 \u0111\u1ed3ng v\u00e0 thu ph\u00ed qu\u1ea3n l\u00fd 5 - 10% gi\u00e1 tr\u1ecb h\u1ee3p \u0111\u1ed3ng. \u0110\u00e2y l\u00e0 h\u00e0nh vi c\u1ed1 \u00fd l\u00e0m tr\u00e1i quy \u0111\u1ecbnh ph\u00e1p lu\u1eadt v\u1ec1 \u0111\u1ea7u t\u01b0.\\nT\u1eeb \u0111\u00f3, Thanh tra Ch\u00ednh ph\u1ee7 ki\u1ebfn ngh\u1ecb B\u1ed9 C\u00f4ng th\u01b0\u01a1ng ch\u1ee7 tr\u00ec ph\u1ed1i h\u1ee3p v\u1edbi B\u1ed9 T\u00e0i ch\u00ednh, Ng\u00e2n h\u00e0ng nh\u00e0 n\u01b0\u1edbc, B\u1ed9 K\u1ebf ho\u1ea1ch - \u0110\u1ea7u t\u01b0 r\u00e0 so\u00e1t, x\u1eed l\u00fd nh\u1eefng t\u1ed3n t\u1ea1i, \u00e1p d\u1ee5ng c\u01a1 ch\u1ebf gi\u1ea3m l\u00e3i vay ph\u00e1t sinh trong th\u1eddi gian d\u1ef1 \u00e1n d\u1eebng thi c\u00f4ng, Tisco kh\u00f4ng c\u00f3 kh\u1ea3 n\u0103ng thanh to\u00e1n, b\u00e1o c\u00e1o Th\u1ee7 t\u01b0\u1edbng cho \u00fd ki\u1ebfn x\u1eed l\u00fd nh\u1eefng v\u01b0\u1edbng m\u1eafc n\u1ebfu c\u00f3. Thanh tra Ch\u00ednh ph\u1ee7 c\u0169ng ki\u1ebfn ngh\u1ecb giao B\u1ed9 T\u00e0i ch\u00ednh theo th\u1ea9m quy\u1ec1n ch\u1ec9 \u0111\u1ea1o, ki\u1ec3m \u0111i\u1ec3m x\u1eed l\u00fd tr\u00e1ch nhi\u1ec7m t\u1ed5 ch\u1ee9c, c\u00e1 nh\u00e2n t\u1ea1i VDB, VDB Chi nh\u00e1nh Th\u00e1i Nguy\u00ean c\u00f3 khuy\u1ebft \u0111i\u1ec3m, n\u00eau t\u1ea1i k\u1ebft lu\u1eadn thanh tra. Nguy c\u01a1 ph\u00e1 s\u1ea3n, m\u1ea5t v\u1ed1n\\nTheo ngu\u1ed3n tin c\u1ee7a Thanh Ni\u00ean, \u0111\u1ebfn nay, VDB v\u1eabn ch\u01b0a th\u1ef1c hi\u1ec7n \u0111\u01b0\u1ee3c vi\u1ec7c c\u01a1 c\u1ea5u n\u1ee3 g\u1ed1c v\u00e0 l\u00e3i cho TISCO. H\u00e0ng th\u00e1ng, VDB v\u1eabn th\u00f4ng b\u00e1o thu n\u1ee3, t\u00ednh l\u00e3i ph\u1ea1t v\u00e0 \u0111ang x\u1ebfp t\u00edn d\u1ee5ng c\u1ee7a TISCO v\u00e0o n\u1ee3 x\u1ea5u nh\u00f3m 5. \u0110\u1ebfn th\u1eddi \u0111i\u1ec3m 31.5.2018, TISCO \u0111ang n\u1ee3 VDB 1.573 t\u1ec9 \u0111\u1ed3ng, trong \u0111\u00f3, n\u1ee3 qu\u00e1 h\u1ea1n l\u00e0 415 t\u1ec9 \u0111\u1ed3ng.\\nLi\u00ean quan \u0111\u1ebfn vi\u1ec7c cho vay d\u1ef1 \u00e1n n\u00e0y c\u00f2n c\u00f3 T\u1ed5ng C\u00f4ng ty \u0110\u1ea7u t\u01b0 v\u00e0 Kinh doanh v\u1ed1n nh\u00e0 n\u01b0\u1edbc (SCIC). Ng\u00e0y 20.11.2014, V\u0103n ph\u00f2ng Ch\u00ednh ph\u1ee7 ban h\u00e0nh v\u0103n b\u1ea3n s\u1ed1 2339/TTg-KTTH g\u1eedi c\u00e1c b\u1ed9, ng\u00e0nh, VNS v\u00e0 Tisco, trong \u0111\u00f3 c\u00f3 n\u1ed9i dung \u201cti\u1ebfp t\u1ee5c th\u1ef1c hi\u1ec7n d\u1ef1 \u00e1n v\u1edbi t\u1ed5ng m\u1ee9c \u0111\u1ea7u t\u01b0 \u0111i\u1ec1u ch\u1ec9nh l\u00e0 8.104 t\u1ec9 \u0111\u1ed3ng. SCIC g\u00f3p t\u1ed1i thi\u1ebfu 1.000 t\u1ec9 \u0111\u1ed3ng\u201d.\\nTin li\u00ean quan D\u1ef1 \u00e1n gang th\u00e9p ng\u00e0n t\u1ec9 \\'\u0111\u1eafp chi\u1ebfu\\': B\u00e1n th\u1ea7u h\u01b0\u1edfng ph\u00ed tr\u00e1i lu\u1eadt\\nH\u00e0ng ng\u00e0n t\u1ec9 \u0111\u1ed3ng \\'\u0111\u1ed1t\\' t\u1ea1i d\u1ef1 \u00e1n gang th\u00e9p Th\u00e1i Nguy\u00ean\\nKi\u1ebfn ngh\u1ecb B\u1ed9 C\u00f4ng an \u0111i\u1ec1u tra 4 v\u1ee5 sai ph\u1ea1m t\u1ea1i Gang th\u00e9p Th\u00e1i Nguy\u00ean B\u00ean c\u1ea1nh \u0111\u00f3, TISCO c\u0169ng k\u00fd v\u1edbi Vietinbank Chi nh\u00e1nh H\u00e0 N\u1ed9i h\u1ee3p \u0111\u1ed3ng t\u00edn d\u1ee5ng s\u1ed1 01/2010/H\u0110TD ng\u00e0y 25.1.2010 v\u00e0 c\u00e1c ph\u1ee5 l\u1ee5c h\u1ee3p \u0111\u1ed3ng tri\u1ec3n khai d\u1ef1 \u00e1n v\u1edbi gi\u00e1 tr\u1ecb h\u1ee3p \u0111\u1ed3ng kh\u00f4ng v\u01b0\u1ee3t qu\u00e1 1.863 t\u1ec9 \u0111\u1ed3ng, s\u1ed1 ti\u1ec1n \u0111\u00e3 gi\u1ea3i ng\u00e2n thanh to\u00e1n gi\u00e1 tr\u1ecb thi\u1ebft b\u1ecb d\u1ef1 \u00e1n l\u00e0 1.458 t\u1ec9 \u0111\u1ed3ng (\u0111\u1ebfn 31.12.2016, s\u1ed1 ti\u1ec1n Tisco c\u00f2n n\u1ee3 l\u00e0 225 t\u1ec9 \u0111\u1ed3ng v\u00e0 72,1 tri\u1ec7u USD). Hi\u1ec7n, kho\u1ea3n n\u1ee3 vay t\u1ea1i VietinBank \u0111\u00e3 \u0111\u01b0\u1ee3c VietinBank c\u01a1 c\u1ea5u th\u1eddi gian tr\u1ea3 n\u1ee3 cho TISCO \u0111\u1ebfn th\u00e1ng 6.2019.\\nTuy nhi\u00ean, b\u00e1o c\u00e1o t\u1ea1i \u0110\u1ea1i h\u1ed9i c\u1ed5 \u0111\u00f4ng \u0111\u1ea7u n\u0103m 2019 c\u1ee7a TISCO cho th\u1ea5y, c\u00f4ng ty n\u00e0y \u0111\u1ee9ng tr\u01b0\u1edbc nguy c\u01a1 ph\u00e1 s\u1ea3n, c\u00f3 th\u1ec3 m\u1ea5t v\u1ed1n \u0111\u1ea7u t\u01b0 c\u1ee7a c\u00e1c c\u1ed5 \u0111\u00f4ng, trong \u0111\u00f3 c\u00f3 c\u1ed5 \u0111\u00f4ng nh\u00e0 n\u01b0\u1edbc l\u00e0 T\u1ed5ng C\u00f4ng ty Th\u00e9p Vi\u1ec7t Nam (chi\u1ebfm 65% v\u1ed1n \u0111i\u1ec1u l\u1ec7 - 1.196 t\u1ec9 \u0111\u1ed3ng), c\u00e1c ng\u00e2n h\u00e0ng m\u1ea5t v\u1ed1n do TISCO kh\u00f4ng tr\u1ea3 n\u1ee3 \u0111\u01b0\u1ee3c, g\u1ea7n 5.000 ng\u01b0\u1eddi lao \u0111\u1ed9ng kh\u00f4ng c\u00f3 vi\u1ec7c l\u00e0m.'\n\nIn [7]: article.published_date \nOut[7]: '13:17 - 22/02/2019\\n0\\nThanh Ni\u00ean Online'\n\nIn [8]: article.tags \nOut[8]: '#tisco#th\u00e1i nguy\u00ean#vdb#ng\u00e2n h\u00e0ng#ph\u00e1t tri\u1ec3n#d\u1ef1 \u00e1n ng\u00e0n t\u1ec9 \u0111\u1eafp chi\u1ebfu'\n\nIn [9]: article.image_urls \nOut[9]: \n['https://image.thanhnien.vn/660/uploaded/xuanvu/vang/1111_adrl.jpg']\n\nIn [10]: article.author \nOut[10]: 'Anh V\u0169 ngovutb@gmail.com'\n```\n\n- Crawl with auto parser mode (requests):\n\n```\nIn [1]: import framler \n\nIn [2]: ac = framler.AutoCrawlParser(\"requests\") \n\nIn [3]: url = \"https://laodong.vn/bong-da-quoc-te/lukaku-lap-cu-dup-man-united-nguoc-dong-kinh-dien-truoc-psg-660940.ldo\" \n\nIn [4]: article = ac.parse(url) \n\nIn [5]: article.title \nOut[5]: 'Lukaku l\u1eadp c\u00fa \u0111\u00fap, Man United ng\u01b0\u1ee3c d\u00f2ng kinh \u0111i\u1ec3n tr\u01b0\u1edbc PSG'\n\nIn [6]: article.text \nOut[6]: 'V\u1edbi d\u00e0n \u0111\u1ed9i h\u00ecnh g\u1ed3m 7 c\u1ea7u th\u1ee7 \u0111\u01b0\u1ee3c \u0111\u00f4n l\u00ean t\u1eeb tuy\u1ebfn tr\u1ebb c\u1ee7a Man United, kh\u00f4ng ai ngh\u0129 \"Qu\u1ef7 \u0111\u1ecf\" l\u1ea1i \"ca kh\u00fac kh\u1ea3i ho\u00e0n\" ngay t\u1ea1i th\u00e1nh \u0111\u1ecba Parc des Princes c\u1ee7a PSG. Khi kh\u00e1n gi\u1ea3 c\u00f2n ch\u01b0a ng\u1ed3i \u1ea5m ch\u1ed7, Man United b\u1ea5t ng\u1edd c\u00f3 b\u00e0n m\u1edf t\u1ec9 s\u1ed1 \u1edf ph\u00fat th\u1ee9 2 sau t\u00ecnh hu\u1ed1ng d\u1ee9t \u0111i\u1ec3m \u1edf s\u00e1t \u0111\u01b0\u1eddng bi\u00ean ngang c\u1ee7a Lukaku. Pha b\u00f3ng tinh t\u1ebf \u0111\u1ebfn gi\u1eadt m\u00ecnh c\u1ee7a ti\u1ec1n \u0111\u1ea1o ng\u01b0\u1eddi B\u1ec9 b\u00e1o hi\u1ec7u v\u1ec1 m\u1ed9t ng\u00e0y may m\u1eafn cho c\u00e1c v\u1ecb kh\u00e1ch \u0111\u1ebfn t\u1eeb Anh. Lukaku tinh t\u1ebf \u0111\u1ebfn kh\u00f3 tin, m\u1edf t\u1ec9 s\u1ed1 cho \u0111\u1ed9i kh\u00e1ch. \u1ea2nh: EPA. Qu\u1ea3 th\u1ef1c, \u0111\u1ebfn ph\u00fat 30, sau m\u1ed9t sai l\u1ea7m kh\u00e1 ng\u1edb ng\u1ea9n c\u1ee7a th\u1ee7 th\u00e0nh k\u00ec c\u1ef1u Buffon, Lukaku c\u00f3 b\u00e0n th\u1eafng th\u1ee9 2 trong tr\u1eadn \u0111\u1ea5u. V\u1eabn t\u1eeb m\u1ed9t t\u00ecnh hu\u1ed1ng theo k\u1ecbch b\u1ea3n ch\u1edbp nho\u00e1ng, Man United s\u1ed1ng l\u1ea1i hi v\u1ecdng \u0111i ti\u1ebfp. Tr\u01b0\u1edbc \u0111\u00f3, ph\u00fat 12, PSG c\u00f3 b\u00e0n g\u1ee1 h\u00f2a 1-1 sau pha \u0111\u1ec7m b\u00f3ng c\u1eadn th\u1eb1ng c\u1ee7a Bernat. Th\u1ebf nh\u01b0ng, 1 b\u00e0n l\u00e0 qu\u00e1 \u00edt v\u1edbi th\u1ea7y tr\u00f2 Tuchel \u1edf tr\u1eadn n\u00e0y. Lukaku ti\u1ebfp t\u1ee5c t\u1ecfa s\u00e1ng. \u1ea2nh: Reuters. B\u01b0\u1edbc sang hi\u1ec7p 2, kh\u00f4ng ai tin Mbappe l\u1ea1i ch\u01a1i v\u00f4 duy\u00ean \u0111\u1ebfn th\u1ebf. Si\u00eau ti\u1ec1n \u0111\u1ea1o ng\u01b0\u1eddi Ph\u00e1p b\u1ecf ph\u00ed r\u1ea5t nhi\u1ec1u c\u01a1 h\u1ed9i. Th\u1eadm ch\u00ed, \u0111\u1ebfn khi \u0111\u1ed1i m\u1eb7t v\u1edbi De Gea, anh c\u0169ng t\u1ef1 v\u1ea5p ng\u00e3 do tr\u01b0\u1ee3t ch\u00e2n. Mbappe \u0111\u00e3 v\u1eady, c\u00e1c m\u0169i nh\u1ecdn kh\u00e1c c\u1ee7a PSG c\u0169ng kh\u00f4ng th\u1ec3 l\u00e0m g\u00ec h\u01a1n, Di Maria \u0111\u00e3 c\u00f3 1 l\u1ea7n \u0111\u01b0a \u0111\u01b0\u1ee3c b\u00f3ng v\u00e0o l\u01b0\u1edbi nh\u01b0ng tr\u1ecdng t\u00e0i c\u0103ng c\u1edd b\u00e1o vi\u1ec7t v\u1ecb. Tr\u1ecdng t\u00e0i \u0111\u00e3 c\u0103ng c\u1edd kh\u00e1 mu\u1ed9n sau khi Di Maria d\u1ee9t \u0111i\u1ec3m. \u1ea2nh: Getty. Tr\u1eadn \u0111\u1ea5u tr\u00f4i d\u1ea7n v\u1ec1 nh\u1eefng ph\u00fat cu\u1ed1i, Ole Solskjaer tung h\u1ebft t\u1ea5t c\u1ea3 nh\u00e2n t\u1ed1 tr\u1ebb nh\u01b0 Chong, Greenwood v\u00e0o s\u00e2n. V\u00e0 r\u1ed3i t\u1eeb m\u1ed9t t\u00ecnh hu\u1ed1ng b\u1ea5t ng\u1edd, Dalot n\u00e3 \u0111\u1ea1i b\u00e1c t\u1eeb ngo\u00e0i v\u00f2ng c\u1ea5m \u1edf ph\u00fat 90, b\u00f3ng ch\u1ea1m tay Kimpembe trong v\u00f2ng c\u1ea5m. Kimpembe \u0111\u00e3 qu\u00e1 non v\u1edbi pha b\u1eadt l\u00ean \u0111\u1ec3 ph\u00f2ng ng\u1ef1. \u1ea2nh: BPI. M\u1ea5t 3 ph\u00fat xem VAR, tr\u1ecdng t\u00e0i ch\u00ednh ch\u1ec9 tay l\u00ean ch\u1ea5m 11m trong s\u1ef1 cay c\u00fa c\u1ee7a Neymar ngo\u00e0i \u0111\u01b0\u1eddng pitch. Si\u00eau sao Brazil kh\u00f4ng th\u1ec3 g\u00f3p m\u1eb7t do ch\u1ea5n th\u01b0\u01a1ng v\u00e0 \u0111\u00e0nh nh\u00ecn Buffon th\u00eam m\u1ed9t l\u1ea7n b\u1ecb \u0111\u00e1nh b\u1ea1i b\u1edfi pha \u0111\u00e1 ph\u1ea1t \u0111\u1ec1n nh\u01b0 x\u00e9 l\u01b0\u1edbi c\u1ee7a Rashford. Rashford s\u00fat penalty r\u1ea5t quy\u1ebft \u0111o\u00e1n, \u0111\u01b0a b\u00f3ng l\u00ean g\u00f3c cao. \u1ea2nh: Reuters. D\u00f9 tr\u1ecdng t\u00e0i ch\u00ednh cho th\u1eddi gian b\u00f9 gi\u1edd l\u00ean \u0111\u1ebfn g\u1ea7n 10 ph\u00fat nh\u01b0ng nh\u1eefng n\u1ed7 l\u1ef1c c\u00f2n l\u1ea1i c\u1ee7a PSG l\u00e0 kh\u00f4ng \u0111\u1ee7. 2 n\u0103m li\u00ean ti\u1ebfp, h\u1ecd b\u1ecb lo\u1ea1i cay \u0111\u1eafng b\u1edfi nh\u1eefng k\u1ecbch b\u1ea3n l\u1ed9i ng\u01b0\u1ee3c d\u00f2ng kh\u00f4ng t\u01b0\u1edfng c\u1ee7a Barcelona v\u00e0 Man United. C\u00f2n v\u1edbi \u0111o\u00e0n qu\u00e2n c\u1ee7a Ole Solskjaer , gi\u1edd l\u00e0 l\u00fac m\u01a1 v\u1ec1 nh\u1eefng \u0111i\u1ec1u t\u01b0\u01a1i \u0111\u1eb9p. Sau 10 n\u0103m, Ole Solskjaer l\u1ea1i ng\u01b0\u1ee3c d\u00f2ng kh\u00f4ng t\u01b0\u1edfng c\u00f9ng Man United. \u1ea2nh: Getty. \u1ede tr\u1eadn \u0111\u1ea5u c\u00f2n l\u1ea1i, FC Porto v\u01b0\u1ee3t qua AS Roma tr\u00ean s\u00e2n nh\u00e0 v\u1edbi t\u1ec9 s\u1ed1 3-1 (4-3). B\u00e0n \u1ea5n \u0111\u1ecbnh t\u1ec9 s\u1ed1 \u0111\u01b0\u1ee3c ghi \u1edf nh\u1eefng ph\u00fat cu\u1ed1i hi\u1ec7p ph\u1ee5 th\u1ee9 2 v\u00e0 c\u0169ng nh\u1edd t\u1edbi VAR. Manchester United , PSG'\n\nIn [7]: article.published_date \nOut[7]: '2019-03-13'\n\nIn [8]: article.tags \nOut[8]: ['manchester united', 'psg']\n\nIn [9]: article.image_urls \nOut[9]: \n['https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/3.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/8.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/10.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/4.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/7.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/12.jpg',\n 'https://www.googletagmanager.com/ns.html?id=GTM-TTSKMGW',\n 'https://certify.alexametrics.com/atrk.gif?account=BZc6s1P8cT20VR',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/11.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/5.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/13.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/9.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/6.jpg',\n 'https://media.laodong.vn/Storage/newsportal/2019/3/6/660940/14.jpg',\n 'https://laodong.vn/img/go-top.png']\n\nIn [10]: article.authors \nOut[10]: ['VI\u1ec6T H\u00d9NG']\n```\n\n- Crawl website use Javascript to render content (use selenium):\n\n```\n# add later, bugs :)\n```\n\n- Crawl with multiprocessing (use requests mode):\n\n```\nIn [1]: import framler \n\nIn [2]: ac = framler.AutoCrawlParser() \n\nIn [3]: urls = ['https://thanhnien.vn/thoi-su/de-xuat-dua-chuan-muc-dao-duc-nha-giao-vao-luat-de-bao-ve-hoc-sinh-1059827.html', \n ...: 'https://thethao.thanhnien.vn/bong-da-quoc-te/chien-thang-truoc-psg-da-mang-lai-hop-dong-dai-han-cho-solskjaer-o-mu-99218.html', \n ...: 'https://dantri.com.vn/xa-hoi/co-van-nha-trang-thuong-dinh-my-trieu-tai-viet-nam-la-mot-thanh-cong-20190304074414493.htm', \n ...: 'https://vnexpress.net/the-gioi/cuoc-gap-phut-chot-cua-doan-viet-nam-tai-binh-nhuong-truoc-thuong-dinh-my-trieu-3892871.html', \n ...: 'https://tuoitre.vn/bao-trieu-tien-chuyen-di-viet-nam-cua-ong-kim-ong-un-lam-rung-chuyen-the-gioi-20190306111422098.htm', \n ...: 'https://news.zing.vn/ong-chu-masan-tro-thanh-ty-phu-usd-khi-chi-so-huu-15-co-phieu-post922676.html', \n ...: 'https://vov.vn/the-gioi/tong-thong-trump-va-dang-dan-chu-2-nam-cuoc-chien-tai-quoc-hoi-882872.vov', \n ...: 'https://laodong.vn/bong-da-quoc-te/lukaku-lap-cu-dup-man-united-nguoc-dong-kinh-dien-truoc-psg-660940.ldo', \n ...: 'https://startup.vnexpress.net/tin-tuc/y-tuong-moi/startup-kiem-nua-ty-dong-nho-cong-nghe-nhan-dien-khuon-mat-3795045.html', \n ...: 'http://cafebiz.vn/ceo-dj-koh-thua-nhan-samsung-da-tut-xuong-vi-tri-thu-hai-o-an-do-20190308083452665.chn', \n ...: 'https://huyhoang17.github.io/machine-learning/2018/09/13/viblo-recommender-system.html', \n ...: 'http://gamek.vn/ban-da-biet-gi-ve-autochess-tua-game-day-nhan-pham-dang-lam-mua-lam-gio-trong-cong-dong-dota-2-20190212150017453.chn'] \n\nIn [4]: articles = ac.run_processes(urls) \n2019-03-13 11:38:56,858 - framler._base - INFO - Number of cpu: 6\nINFO:framler._base:Number of cpu: 6\n2019-03-13 11:39:14,338 - framler._base - INFO - Elapsed run time: 17.478716611862183 seconds\nINFO:framler._base:Elapsed run time: 17.478716611862183 seconds\n2019-03-13 11:39:14,338 - framler._base - INFO - Task ended. Pool join!\nINFO:framler._base:Task ended. Pool join!\n\nIn [5]: len(articles) \nOut[5]: 12\n\nIn [6]: for article in articles: \n ...: print(article.title) \n ...: \nTh\u1eddi s\u1ef1 \u0110\u1ec1 xu\u1ea5t \u0111\u01b0a chu\u1ea9n m\u1ef1c \u0111\u1ea1o \u0111\u1ee9c nh\u00e0 gi\u00e1o v\u00e0o lu\u1eadt \u0111\u1ec3 b\u1ea3o v\u1ec7 h\u1ecdc sinh\nChi\u1ebfn th\u1eafng tr\u01b0\u1edbc PSG \u0111\u00e3 mang l\u1ea1i h\u1ee3p \u0111\u1ed3ng d\u00e0i h\u1ea1n cho Solskjaer \u1edf M.U\nC\u1ed1 v\u1ea5n Nh\u00e0 Tr\u1eafng: Th\u01b0\u1ee3ng \u0111\u1ec9nh M\u1ef9 - Tri\u1ec1u t\u1ea1i Vi\u1ec7t Nam l\u00e0 m\u1ed9t th\u00e0nh c\u00f4ng\nCu\u1ed9c g\u1eb7p ph\u00fat ch\u00f3t c\u1ee7a \u0111o\u00e0n Vi\u1ec7t Nam t\u1ea1i B\u00ecnh Nh\u01b0\u1ee1ng tr\u01b0\u1edbc th\u01b0\u1ee3ng \u0111\u1ec9nh M\u1ef9 - Tri\u1ec1u\nB\u00e1o Tri\u1ec1u Ti\u00ean: Chuy\u1ebfn \u0111i Vi\u1ec7t Nam c\u1ee7a \u00f4ng Kim Jong Un 'l\u00e0m rung chuy\u1ec3n th\u1ebf gi\u1edbi'\nZing.vn Tri th\u1ee9c tr\u1ef1c tuy\u1ebfn \u00d4ng ch\u1ee7 Masan tr\u1edf th\u00e0nh t\u1ef7 ph\u00fa USD khi ch\u1ec9 s\u1edf h\u1eefu 15 c\u1ed5 phi\u1ebfu?\nT\u1ed5ng th\u1ed1ng Trump v\u00e0 \u0111\u1ea3ng D\u00e2n ch\u1ee7: 2 n\u0103m cu\u1ed9c chi\u1ebfn t\u1ea1i Qu\u1ed1c h\u1ed9i Phe D\u00e2n ch\u1ee7 mu\u1ed1n \u201c\u0111\u00e1nh\u201d \u0111\u00f2n hi\u1ec3m v\u00e0o \u00f4ng Trump b\u1eb1ng t\u00e0i li\u1ec7u nh\u1ea1y c\u1ea3m\nLukaku l\u1eadp c\u00fa \u0111\u00fap, Man United ng\u01b0\u1ee3c d\u00f2ng kinh \u0111i\u1ec3n tr\u01b0\u1edbc PSG\nStartup ki\u1ebfm n\u1eeda t\u1ef7 \u0111\u1ed3ng nh\u1edd c\u00f4ng ngh\u1ec7 nh\u1eadn di\u1ec7n khu\u00f4n m\u1eb7t\nCEO DJ Koh th\u1eeba nh\u1eadn Samsung \u0111\u00e3 t\u1ee5t xu\u1ed1ng v\u1ecb tr\u00ed th\u1ee9 hai \u1edf \u1ea4n \u0110\u1ed9\nX\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng g\u1ee3i \u00fd b\u00e0i vi\u1ebft cho ... website Viblo\nB\u1ea1n \u0111\u00e3 bi\u1ebft g\u00ec v\u1ec1 Auto Chess, t\u1ef1a game \u0111\u1ea7y \"nh\u00e2n ph\u1ea9m\" \u0111ang l\u00e0m m\u01b0a l\u00e0m gi\u00f3 trong c\u1ed9ng \u0111\u1ed3ng DOTA 2\n```\n\n### TODO\n\n- Add document\n\nReference\n---------\n\nBased on newspaper's API library: https://github.com/codelucas/newspaper and AutoCrawler library: https://github.com/YoongiKim/AutoCrawler\n\nCredits\n-------\n\nThis package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the [`audreyr/cookiecutter-pypackage`](https://github.com/audreyr/cookiecutter-pypackage) project template.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/huyhoang17/framler", "keywords": "framler", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "framler", "package_url": "https://pypi.org/project/framler/", "platform": "", "project_url": "https://pypi.org/project/framler/", "project_urls": { "Homepage": "https://github.com/huyhoang17/framler" }, "release_url": "https://pypi.org/project/framler/0.1.1/", "requires_dist": [ "beautifulsoup4 (==4.7.1)", "certifi (==2018.11.29)", "chardet (==3.0.4)", "Click (==7.0)", "datefinder (==0.7.0)", "idna (==2.8)", "lxml (==4.3.2)", "python-dateutil (==2.8.0)", "pytz (==2018.9)", "PyYAML (==3.13)", "regex (==2019.3.12)", "requests (==2.21.0)", "selenium (==3.141.0)", "six (==1.12.0)", "soupsieve (==1.8)", "tqdm (==4.31.1)", "urllib3 (==1.24.1)" ], "requires_python": "", "summary": "Python package for crawler data and extract main information", "version": "0.1.1" }, "last_serial": 4933940, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "066ef8966cef7518a0d5c912ba0f5537", "sha256": "4acb1e82344f9070aac2ccccc652da44ab513cab73d1f4db1b18022bf5bb0181" }, "downloads": -1, "filename": "framler-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "066ef8966cef7518a0d5c912ba0f5537", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3924, "upload_time": "2019-02-12T07:04:37", "url": "https://files.pythonhosted.org/packages/3d/bc/d1c3cc76902b2ba8c70bbc033fce764729a5ac1028f6837c96edaf517654/framler-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91eb880bce8c21951290549fb923ceb3", "sha256": "a388e01ffeb728fcca1c601a4e3691861785cdaee1d0a310ffd3bcb135b52308" }, "downloads": -1, "filename": "framler-0.0.1.tar.gz", "has_sig": false, "md5_digest": "91eb880bce8c21951290549fb923ceb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8546, "upload_time": "2019-02-12T07:04:39", "url": "https://files.pythonhosted.org/packages/18/5f/e6797ab8a95627867dafedd9ae01b3b9f2dc529ad05f9c8b381bdaafac47/framler-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fdfb32c409db29fc96333515f3d394b0", "sha256": "6946d8078ba763689c12cbfee3ffe79c26e6087345b1a048097590dcf69f3ccf" }, "downloads": -1, "filename": "framler-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fdfb32c409db29fc96333515f3d394b0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3851, "upload_time": "2019-02-12T07:34:45", "url": "https://files.pythonhosted.org/packages/7e/4f/57fc5ab2c14d4e6158c83287a0b8ec6373e626e53b1589c6c7f1d1a7013b/framler-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5f89bb30d8b6e32789d0986f601d0fc", "sha256": "d8d6a796ee6e1f83d7f543cf797732e696e0e58fe80f498b8e37c61634b95c52" }, "downloads": -1, "filename": "framler-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b5f89bb30d8b6e32789d0986f601d0fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8555, "upload_time": "2019-02-12T07:34:47", "url": "https://files.pythonhosted.org/packages/8f/a4/f34778ad74af8e3440c9d170583aea2288355cef8b3780a780a16d100098/framler-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "a3497f38c1aa74600cbb87ddff4488fa", "sha256": "72a24027b7b44acbf946bb077d1d034811d26bb95326958eb10c2bb5469d2c4b" }, "downloads": -1, "filename": "framler-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a3497f38c1aa74600cbb87ddff4488fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3685, "upload_time": "2019-02-12T07:54:56", "url": "https://files.pythonhosted.org/packages/49/15/a1bb4eb7b269a06dd6123d7a93e0f0c7fca512dd1bb5317102c16a49d669/framler-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0493484005743759d448f111a71e4941", "sha256": "b4f7f165c0798ec08b4bb8afd91580299c3ed06b72c2a669976ecc908b408bb2" }, "downloads": -1, "filename": "framler-0.0.3.tar.gz", "has_sig": false, "md5_digest": "0493484005743759d448f111a71e4941", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8432, "upload_time": "2019-02-12T07:54:57", "url": "https://files.pythonhosted.org/packages/f4/20/b3f819395c2d8c527bdeadb6fd6408685254b407968332c7703762642c72/framler-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3bd7a0c8563f0a682c2b80b7b4b1a10c", "sha256": "b340da14bfb442b856cb2d084a14d2213f7c5c3810f95faf854548a41b571126" }, "downloads": -1, "filename": "framler-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3bd7a0c8563f0a682c2b80b7b4b1a10c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9177, "upload_time": "2019-02-19T06:54:55", "url": "https://files.pythonhosted.org/packages/a3/cb/1f472eee64adb73583ba610122222ece22a7d521d6d83584e544dfbd1cc8/framler-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a59da9e5bd86d7d5e385ab2ae983c27", "sha256": "f3c86ed9e27d1b751930cfcc45b75cbc177c3eb8827576d6fc2c17e4900f1ffe" }, "downloads": -1, "filename": "framler-0.0.4.tar.gz", "has_sig": false, "md5_digest": "5a59da9e5bd86d7d5e385ab2ae983c27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12339, "upload_time": "2019-02-19T06:54:56", "url": "https://files.pythonhosted.org/packages/82/1e/d3cc61982d70a736c7b2b46b6dd8ebfcff19937a8444955e2ec9cf6bd2a7/framler-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "13aaf0151c3529218dfea1b81febdc90", "sha256": "2e931dc3a7b7c63c1837aa21747645414d09f979e696315b698b9bd83dbe2b48" }, "downloads": -1, "filename": "framler-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13aaf0151c3529218dfea1b81febdc90", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11201, "upload_time": "2019-02-19T07:08:04", "url": "https://files.pythonhosted.org/packages/67/27/0ff087a7c3602cb002d04a44980fe66a0d357d40725bd27ae0748067457c/framler-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad7bd538d934acddd1497076ffd11643", "sha256": "09beff3a1d43c701d4add9f2b6797168542832a90332f93c8d6cd99fc75bdab6" }, "downloads": -1, "filename": "framler-0.0.5.tar.gz", "has_sig": false, "md5_digest": "ad7bd538d934acddd1497076ffd11643", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17035, "upload_time": "2019-02-19T07:08:06", "url": "https://files.pythonhosted.org/packages/96/5c/31d606fb5f89c76276f9802fe7cc80c963b8c2a03cfdfeb5d9e182fde5bf/framler-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "d1aa354e3f24a5c71ec1cbdfbb94aabd", "sha256": "b03bd964cd78a2af479f79ed77b4b6d9a5d40b141e8c67a2ebcc7747628618be" }, "downloads": -1, "filename": "framler-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d1aa354e3f24a5c71ec1cbdfbb94aabd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11694, "upload_time": "2019-02-19T07:21:10", "url": "https://files.pythonhosted.org/packages/9f/7c/cc68e4a36f1fb6cea0f49f400e79d8cf3310a427e3fb39bd5d00911ff2a5/framler-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9d1929c04b5725ccd2511290a4092bf", "sha256": "a419d0a798e2a8f3f318c16f29e8044e93a4131a22d27e23a2e7dd30341a1819" }, "downloads": -1, "filename": "framler-0.0.6.tar.gz", "has_sig": false, "md5_digest": "e9d1929c04b5725ccd2511290a4092bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17478, "upload_time": "2019-02-19T07:21:12", "url": "https://files.pythonhosted.org/packages/26/b9/8a3dfc8b0dc480df325d42aadb03839fe65f0de89402f8c9c228cb3ea960/framler-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "5ab83fb00c2309e9b9a0c5091aaf2626", "sha256": "c13fb992bc2f338382a6db6359586c4e673a347400fba3000cd021854d9981de" }, "downloads": -1, "filename": "framler-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ab83fb00c2309e9b9a0c5091aaf2626", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11854, "upload_time": "2019-02-19T07:58:49", "url": "https://files.pythonhosted.org/packages/4c/11/aa80e6080d2bc15af5d48f152d49df85bdd4724d6608acda3ba69f712405/framler-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1abae71ea8e90a0987f0ff952a24f5e5", "sha256": "e5f829d04737be5e3e34d78f84cc20e71fa1812efd0cb3284a5df5f23229328c" }, "downloads": -1, "filename": "framler-0.0.7.tar.gz", "has_sig": false, "md5_digest": "1abae71ea8e90a0987f0ff952a24f5e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17681, "upload_time": "2019-02-19T07:58:50", "url": "https://files.pythonhosted.org/packages/03/a0/93bee08578e8d86f6d0490dda9e900b53f50c39c4638b8b6cface9c4967d/framler-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "0d491554cee50ec7903a273f3b8f1984", "sha256": "5927bc139a68ff1fac00d8f0f283af403ed2e8320b79925619b592f69c8e4cca" }, "downloads": -1, "filename": "framler-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d491554cee50ec7903a273f3b8f1984", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13612, "upload_time": "2019-02-22T08:59:56", "url": "https://files.pythonhosted.org/packages/1c/d7/62ec0f853d3fb29f2b955f7b65e86c7c9499487024f893d0e7b36c3e604a/framler-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0055bd6c2d6b66a5c841955bfc145b06", "sha256": "2bf0ff94b6ac7d8c284567786821fc7058e593ba7cc40ecfda18649dfd9508bc" }, "downloads": -1, "filename": "framler-0.0.8.tar.gz", "has_sig": false, "md5_digest": "0055bd6c2d6b66a5c841955bfc145b06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20196, "upload_time": "2019-02-22T08:59:57", "url": "https://files.pythonhosted.org/packages/53/61/4c46669153a9ee955b7789ef0a0065f546a1a0bae4ea966f98303f7963f6/framler-0.0.8.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "0e67d32a32a3d67984ebdf0e982951f1", "sha256": "e3f2b47d00e991fb440616fbed7cd9351adc947464aa1c4beada820c72484a8b" }, "downloads": -1, "filename": "framler-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0e67d32a32a3d67984ebdf0e982951f1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20114, "upload_time": "2019-03-13T04:48:57", "url": "https://files.pythonhosted.org/packages/79/59/7703a283aebeace7417795343e9b13b422573b04c2d6855e519497ac4273/framler-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "adb442d281a2629f8e2bad3b1e4293ae", "sha256": "d1483fbffd084b95c5828b7e78d6804da788e815c9a01589ab22f9fdf5f5c36f" }, "downloads": -1, "filename": "framler-0.1.0.tar.gz", "has_sig": false, "md5_digest": "adb442d281a2629f8e2bad3b1e4293ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30326, "upload_time": "2019-03-13T04:48:59", "url": "https://files.pythonhosted.org/packages/8a/71/927cea5b8de9a1ef6dbd67507919c45b70da19f6359a293f2140a5bb9dd6/framler-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e8914f33bbddaf5beb5b300f1ac5e1b4", "sha256": "dc80ee006c487ae28a69ecdad5390677c9a0367e78b1a2fbb9d4e1e2dbb94919" }, "downloads": -1, "filename": "framler-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8914f33bbddaf5beb5b300f1ac5e1b4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20465, "upload_time": "2019-03-13T10:16:48", "url": "https://files.pythonhosted.org/packages/e7/fa/21708e09db882dc1011c93436517194eea95e5640d3d0851194ed82d3d96/framler-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac60863f83e403821ced8b9f567a6552", "sha256": "72149d98546c1a201290762e77985ba043c27115c938958e8b398714e2d9979f" }, "downloads": -1, "filename": "framler-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ac60863f83e403821ced8b9f567a6552", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30474, "upload_time": "2019-03-13T10:16:50", "url": "https://files.pythonhosted.org/packages/ec/1a/557c7f869050a39cb34f7ff8b526eea0d0cd85ef88375c5649a35a672800/framler-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e8914f33bbddaf5beb5b300f1ac5e1b4", "sha256": "dc80ee006c487ae28a69ecdad5390677c9a0367e78b1a2fbb9d4e1e2dbb94919" }, "downloads": -1, "filename": "framler-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e8914f33bbddaf5beb5b300f1ac5e1b4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20465, "upload_time": "2019-03-13T10:16:48", "url": "https://files.pythonhosted.org/packages/e7/fa/21708e09db882dc1011c93436517194eea95e5640d3d0851194ed82d3d96/framler-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac60863f83e403821ced8b9f567a6552", "sha256": "72149d98546c1a201290762e77985ba043c27115c938958e8b398714e2d9979f" }, "downloads": -1, "filename": "framler-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ac60863f83e403821ced8b9f567a6552", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30474, "upload_time": "2019-03-13T10:16:50", "url": "https://files.pythonhosted.org/packages/ec/1a/557c7f869050a39cb34f7ff8b526eea0d0cd85ef88375c5649a35a672800/framler-0.1.1.tar.gz" } ] }