{ "info": { "author": "Mike Sukmanowsky", "author_email": "mike@parsely.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Intended Audience :: Information Technology", "License :: OSI Approved :: BSD License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: Indexing/Search", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "serpextract\n===========\n\n.. image:: https://travis-ci.org/Meiqia/serpextract.png?branch=master\n :target: https://travis-ci.org/Meiqia/serpextract\n\n``serpextract`` provides easy extraction of keywords from search engine results pages (SERPs).\n\nThis module is possible in large part to the very hard work of the `Piwik `_ team.\nSpecifically, we make extensive use of their `list of search engines `_.\n\n\nInstallation\n------------\nLatest release on PyPI::\n\n $ pip install serpextract\n\nOr the latest development version (not recommended)::\n\n $ pip install -e git://github.com/Parsely/serpextract.git#egg=serpextract\n\nUsage\n-----\n\nCommand Line\n^^^^^^^^^^^^\n\nCommand-line usage, returns the engine name and keyword components separated by a\ncomma and enclosed in quotes::\n\n $ serpextract \"http://www.google.ca/url?sa=t&rct=j&q=ars%20technica\"\n \"Google\",\"ars technica\"\n\nYou can also print out a list of all the SearchEngineParsers currently available in\nyour local cache via::\n\n $ serpextract -l\n\nPython\n^^^^^^\n\n.. code-block:: python\n\n from serpextract import get_parser, extract, is_serp, get_all_query_params\n\n non_serp_url = 'http://arstechnica.com/'\n serp_url = ('http://www.google.ca/url?sa=t&rct=j&q=ars%20technica&source=web&cd=1&ved=0CCsQFjAA'\n '&url=http%3A%2F%2Farstechnica.com%2F&ei=pf7RUYvhO4LdyAHf9oGAAw&usg=AFQjCNHA7qjcMXh'\n 'j-UX9EqSy26wZNlL9LQ&bvm=bv.48572450,d.aWc')\n\n get_all_query_params()\n # ['key', 'text', 'search_for', 'searchTerm', 'qrs', 'keyword', ...]\n\n is_serp(serp_url)\n # True\n is_serp(non_serp_url)\n # False\n\n get_parser(serp_url)\n # SearchEngineParser(engine_name='Google', keyword_extractor=['q'], link_macro='search?q={k}', charsets=['utf-8'])\n get_parser(non_serp_url)\n # None\n\n extract(serp_url)\n # ExtractResult(engine_name='Google', keyword=u'ars technica', parser=SearchEngineParser(...))\n extract(non_serp_url)\n # None\n\n**Naive Detection**\n\nThe list of search engine parsers that Piwik and therefore ``serpextract`` uses is far from\nexhaustive. If you want ``serpextract`` to attempt to guess if a given referring URL is a SERP,\nyou can specify ``use_naive_method=True`` to ``serpextract.is_serp`` or ``serpextract.extract``.\nBy default, the naive method is disabled.\n\nNaive search engine detection tries to find an instance of ``r'\\.?search\\.'`` in the ``netloc``\nof a URL. If found, ``serpextract`` will then try to find a keyword in the ``query`` portion of\nthe URL by looking for the following params in order::\n\n _naive_params = ('q', 'query', 'k', 'keyword', 'term',)\n\nIf one of these are found, a keyword is extracted and an ``ExtractResult`` is constructed as::\n\n ExtractResult(domain, keyword, None) # No parser, but engine name and keyword\n\n.. code-block:: python\n\n # Not a recognized search engine by serpextract\n serp_url = 'http://search.piccshare.com/search.php?cat=web&channel=main&hl=en&q=test'\n\n is_serp(serp_url)\n # False\n\n extract(serp_url)\n # None\n\n is_serp(serp_url, use_naive_method=True)\n # True\n\n extract(serp_url, use_naive_method=True)\n # ExtractResult(engine_name=u'piccshare', keyword=u'test', parser=None)\n\n**Custom Parsers**\n\nIn the event that you have a custom search engine that you'd like to track which is not currently\nsupported by Piwik/``serpextract``, you can create your own instance of\n``serpextract.SearchEngineParser`` and either pass it explicitly to either\n``serpextract.is_serp`` or ``serpextract.extract`` or add it\nto the internal list of parsers.\n\n.. code-block:: python\n\n # Create a parser for PiccShare\n from serpextract import SearchEngineParser, is_serp, extract\n\n my_parser = SearchEngineParser(u'PiccShare', # Engine name\n u'q', # Keyword extractor\n u'/search.php?q={k}', # Link macro\n u'utf-8') # Charset\n serp_url = 'http://search.piccshare.com/search.php?cat=web&channel=main&hl=en&q=test'\n\n is_serp(serp_url)\n # False\n\n extract(serp_url)\n # None\n\n is_serp(serp_url, parser=my_parser)\n # True\n\n extract(serp_url, parser=my_parser)\n # ExtractResult(engine_name=u'PiccShare', keyword=u'test', parser=SearchEngineParser(engine_name=u'PiccShare', keyword_extractor=[u'q'], link_macro=u'/search.php?q={k}', charsets=[u'utf-8']))\n\n\nYou can also permanently add a custom parser to the internal list of parsers that\n``serpextract`` maintains so that you no longer have to explicitly pass a parser\nobject to ``serpextract.is_serp`` or ``serpextract.extract``.\n\n.. code-block:: python\n\n from serpextract import SearchEngineParser, add_custom_parser, is_serp, extract\n\n my_parser = SearchEngineParser(u'PiccShare', # Engine name\n u'q', # Keyword extractor\n u'/search.php?q={k}', # Link macro\n u'utf-8') # Charset\n add_custom_parser(u'search.piccshare.com', my_parser)\n\n serp_url = 'http://search.piccshare.com/search.php?cat=web&channel=main&hl=en&q=test'\n is_serp(serp_url)\n # True\n\n extract(serp_url)\n # ExtractResult(engine_name=u'PiccShare', keyword=u'test', parser=SearchEngineParser(engine_name=u'PiccShare', keyword_extractor=[u'q'], link_macro=u'/search.php?q={k}', charsets=[u'utf-8']))\n\n\nTests\n-----\n\nThere are some basic tests for popular search engines, but more are required::\n\n $ pip install -r requirements.txt\n $ nosetests\n\nCaching\n-------\n\nInternally, this module caches an OrderedDict representation of \n`Piwik's list of search engines `_\nwhich is stored in ``serpextract/search_engines.pickle``. This isn't intended to change that often and so this\nmodule ships with a cached version.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/Meiqia/serpextract/", "keywords": "search engines keyword extract", "license": "LICENSE.txt", "maintainer": "", "maintainer_email": "", "name": "serpextract-meiqia", "package_url": "https://pypi.org/project/serpextract-meiqia/", "platform": "any", "project_url": "https://pypi.org/project/serpextract-meiqia/", "project_urls": { "Homepage": "http://github.com/Meiqia/serpextract/" }, "release_url": "https://pypi.org/project/serpextract-meiqia/2019.1.15.0/", "requires_dist": [ "iso3166 (>=0.4)", "pylru (>=1.0.3)", "tldextract (>=1.2)", "chardet" ], "requires_python": "", "summary": "Easy extraction of keywords from search engine results pages (SERPs).", "version": "2019.1.15.0" }, "last_serial": 4942557, "releases": { "2016.11.7.1": [ { "comment_text": "", "digests": { "md5": "9181c0f470b5ddca806598a9061d7cd4", "sha256": "13faf0ca2b191dbff40f81bd2c47ebb1e11418bb0714a33c25ebe49aa5313782" }, "downloads": -1, "filename": "serpextract_meiqia-2016.11.7.1-py2-none-any.whl", "has_sig": false, "md5_digest": "9181c0f470b5ddca806598a9061d7cd4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 24250, "upload_time": "2016-11-07T09:47:50", "url": "https://files.pythonhosted.org/packages/a2/ed/850922c9c16aae5b064abbe0bfecf4278071be7826a51a4d3995a0831cb8/serpextract_meiqia-2016.11.7.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0424dc949c437787240e2cc5edbf683", "sha256": "81acc399212805ae7184f64041134f9ea518e2db1b9f97ee3c7ed35dfea2c6e6" }, "downloads": -1, "filename": "serpextract-meiqia-2016.11.7.1.tar.gz", "has_sig": false, "md5_digest": "b0424dc949c437787240e2cc5edbf683", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22032, "upload_time": "2016-11-07T09:47:52", "url": "https://files.pythonhosted.org/packages/89/45/ad803fd9466c842fa89cbf7a95d82e33eb3c0c8ec54fc957cd41969d233e/serpextract-meiqia-2016.11.7.1.tar.gz" } ], "2016.8.1": [ { "comment_text": "", "digests": { "md5": "cda2c63ee61a3c3194f891afdb235e49", "sha256": "eb9b363373c33aa26d4a219d2ba647d313abb6bf63d839e141d82c42f4f87879" }, "downloads": -1, "filename": "serpextract_meiqia-2016.8.1-py2-none-any.whl", "has_sig": false, "md5_digest": "cda2c63ee61a3c3194f891afdb235e49", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 42374, "upload_time": "2016-08-01T08:12:21", "url": "https://files.pythonhosted.org/packages/3a/7d/c33533103b8f5d4f977b8c5232a081e14ee52af09e1f37747afc837f8fb4/serpextract_meiqia-2016.8.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e9710df22dafb582200256ef16b1f526", "sha256": "ff475e5064edb9205fe4386e1e858626a38bea3481001b82199e632e556d79de" }, "downloads": -1, "filename": "serpextract-meiqia-2016.8.1.zip", "has_sig": false, "md5_digest": "e9710df22dafb582200256ef16b1f526", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47795, "upload_time": "2016-08-01T08:12:06", "url": "https://files.pythonhosted.org/packages/1b/72/973a0373cf48fc5c6ec2fa553d8c1f185716686b975aeb9c83460fd57515/serpextract-meiqia-2016.8.1.zip" } ], "2016.8.16": [ { "comment_text": "", "digests": { "md5": "aa1eb05b801b595987e35786d08c30aa", "sha256": "6ca72eb41fe5cedcb4caddf44210d97deb315ef925ca65c2d07b338a989de605" }, "downloads": -1, "filename": "serpextract_meiqia-2016.8.16-py2-none-any.whl", "has_sig": false, "md5_digest": "aa1eb05b801b595987e35786d08c30aa", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 42395, "upload_time": "2016-08-16T05:31:18", "url": "https://files.pythonhosted.org/packages/b0/25/1187c0e7e1afd4ab6293762e010f55a739e6002e2a7305fc220e04c84802/serpextract_meiqia-2016.8.16-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2f55ff6758215eda4de2b86df3f90b5", "sha256": "d7af64d8a7d1cd72d8e224860d059999f2e69a1b296e557a4efe6172d9cea6a8" }, "downloads": -1, "filename": "serpextract-meiqia-2016.8.16.tar.gz", "has_sig": false, "md5_digest": "e2f55ff6758215eda4de2b86df3f90b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43052, "upload_time": "2016-08-16T05:31:12", "url": "https://files.pythonhosted.org/packages/3b/4e/fdddc0a774172be2e68b15aa5d93add4e0fb89100967049e2a1445f68880/serpextract-meiqia-2016.8.16.tar.gz" } ], "2016.8.16.2": [ { "comment_text": "", "digests": { "md5": "0b704b4623f124399ed614d059b2529f", "sha256": "c05d10208720e079148951094e95e389b45e3079ac2ac21904ee08d764f58a43" }, "downloads": -1, "filename": "serpextract_meiqia-2016.8.16.2-py2-none-any.whl", "has_sig": false, "md5_digest": "0b704b4623f124399ed614d059b2529f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 42409, "upload_time": "2016-08-16T05:42:16", "url": "https://files.pythonhosted.org/packages/0f/36/8d06f42fa5a96fdcac2108cb41b1a74d9ae5ba57aaa47e8bcc2589262eb8/serpextract_meiqia-2016.8.16.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78f5095d3d4f43a0a0e42d432b88994a", "sha256": "4b090702b0f1a682d0bf907ebbea7847ada25852c9ec5bc7bc9452511b459966" }, "downloads": -1, "filename": "serpextract-meiqia-2016.8.16.2.tar.gz", "has_sig": false, "md5_digest": "78f5095d3d4f43a0a0e42d432b88994a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43050, "upload_time": "2016-08-16T05:42:11", "url": "https://files.pythonhosted.org/packages/bc/c2/89043e450f9877d2bad801efb7bc4cd2b063bf72fcc2c71c5f7ab4766985/serpextract-meiqia-2016.8.16.2.tar.gz" } ], "2017.10.11.0": [ { "comment_text": "", "digests": { "md5": "16d0f4a5c31e0e699a2b82e4ef209834", "sha256": "070b25983e5efef6d29c244234ddfc6dc9df7b275a87ec77f7e799cc74563f8c" }, "downloads": -1, "filename": "serpextract_meiqia-2017.10.11.0-py2-none-any.whl", "has_sig": false, "md5_digest": "16d0f4a5c31e0e699a2b82e4ef209834", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 42232, "upload_time": "2017-10-12T08:31:58", "url": "https://files.pythonhosted.org/packages/3c/dc/aa359cb4b329b698746078029627c9a095600e92db00a99d42d55ebdceb6/serpextract_meiqia-2017.10.11.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "42cd590298cf1a574c44a5dee9190964", "sha256": "4a8327fbee2c5f9475ddabb7cfc0527c5747dbf80c203fe176b372958866bd82" }, "downloads": -1, "filename": "serpextract-meiqia-2017.10.11.0.tar.gz", "has_sig": false, "md5_digest": "42cd590298cf1a574c44a5dee9190964", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40206, "upload_time": "2017-10-12T08:31:58", "url": "https://files.pythonhosted.org/packages/b2/8e/fbbf570b351e742acfc42b863f6c408aedee3c2fa75124b4519d4cc6354b/serpextract-meiqia-2017.10.11.0.tar.gz" } ], "2017.10.20.0": [ { "comment_text": "", "digests": { "md5": "6c71b69ed5bdf79e735b9d97d33725f3", "sha256": "080d673ddd0eb2d47c885d3a359c46e3c5b9464b4edc3bc0ef8eb025ad382117" }, "downloads": -1, "filename": "serpextract_meiqia-2017.10.20.0-py2-none-any.whl", "has_sig": false, "md5_digest": "6c71b69ed5bdf79e735b9d97d33725f3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 42240, "upload_time": "2017-10-20T06:54:36", "url": "https://files.pythonhosted.org/packages/22/6e/80c2968de39ecd36b9ce6bbce20f21b18b98ccbecdd5ad95c04d1b1bc9ac/serpextract_meiqia-2017.10.20.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "740da1c53a18bd5996778148d49db78e", "sha256": "2eb0fc1fcad78ac4e0f70bbef65e83b90174625f7c2567bcc243d8235103e074" }, "downloads": -1, "filename": "serpextract-meiqia-2017.10.20.0.tar.gz", "has_sig": false, "md5_digest": "740da1c53a18bd5996778148d49db78e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40215, "upload_time": "2017-10-20T06:54:37", "url": "https://files.pythonhosted.org/packages/9a/e9/790f1cc89eba70c5b60495850d3863715d3d35978c27b47de28b4ee9f624/serpextract-meiqia-2017.10.20.0.tar.gz" } ], "2018.10.30.0": [ { "comment_text": "", "digests": { "md5": "83402e2a1083ea1790efa0505c89f79e", "sha256": "a15627b62d58585ab14187a1e74a9045464a61fccb5742cb89a2fde4b7162b58" }, "downloads": -1, "filename": "serpextract_meiqia-2018.10.30.0-py2-none-any.whl", "has_sig": false, "md5_digest": "83402e2a1083ea1790efa0505c89f79e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 39821, "upload_time": "2018-10-31T02:57:51", "url": "https://files.pythonhosted.org/packages/1a/57/3f2c67d05a893c5e18ac68c5cd339368ff16b3444010b9aa6b331021e3a0/serpextract_meiqia-2018.10.30.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1497636371c283c181c0dfae8a89d0a", "sha256": "ca24d6b7cecf53abf11ef831a9cd05c45496cd6b7beaa6b45f1dc8a84d2e6db7" }, "downloads": -1, "filename": "serpextract-meiqia-2018.10.30.0.tar.gz", "has_sig": false, "md5_digest": "f1497636371c283c181c0dfae8a89d0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40050, "upload_time": "2018-10-31T02:57:52", "url": "https://files.pythonhosted.org/packages/6f/c5/85dc28e5bed6249dfc0730a7aaaecd3e576bc5e6b479af7dd00547856345/serpextract-meiqia-2018.10.30.0.tar.gz" } ], "2018.2.28.0": [ { "comment_text": "", "digests": { "md5": "0a9bd4e0062c40c85c65d7d4baa48f8e", "sha256": "f99d8ba1b731f130f7fc39e160b0465451f18f35658593993d64b978e2e963bc" }, "downloads": -1, "filename": "serpextract_meiqia-2018.2.28.0-py2-none-any.whl", "has_sig": false, "md5_digest": "0a9bd4e0062c40c85c65d7d4baa48f8e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 42033, "upload_time": "2018-02-28T04:15:56", "url": "https://files.pythonhosted.org/packages/eb/f8/44a6bd8899bf203324d3f747933267c71284b3d49382cca50743ec93b9c1/serpextract_meiqia-2018.2.28.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76dad25739895f65d56a459e7622c39b", "sha256": "e3503933d8a17bb4c169afd2f169ae39c72279176f970c7422ed7246924b11e4" }, "downloads": -1, "filename": "serpextract-meiqia-2018.2.28.0.tar.gz", "has_sig": false, "md5_digest": "76dad25739895f65d56a459e7622c39b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40040, "upload_time": "2018-02-28T04:15:59", "url": "https://files.pythonhosted.org/packages/6f/e7/0c6c9a403f998089bc1ae575427da41b1b21debf80b3740537fad234a714/serpextract-meiqia-2018.2.28.0.tar.gz" } ], "2018.7.3.1": [ { "comment_text": "", "digests": { "md5": "05bf6cd5b82316a0f804f875f2cd9f2d", "sha256": "926c8c6659819373681c5032d0d37fc10a644726f72d897bfa31924a82cd1d24" }, "downloads": -1, "filename": "serpextract_meiqia-2018.7.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "05bf6cd5b82316a0f804f875f2cd9f2d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 38750, "upload_time": "2018-07-03T09:02:38", "url": "https://files.pythonhosted.org/packages/08/9b/cf44777ad1409bb7cc73f4800489d206089e9e5650e4c46a5be6ec101ea4/serpextract_meiqia-2018.7.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a403fe88c3007909727c952bbc20c566", "sha256": "ea19a007af50075bcb32a67373582bbbce6572574691b3ae2daeed3d93584722" }, "downloads": -1, "filename": "serpextract-meiqia-2018.7.3.1.tar.gz", "has_sig": false, "md5_digest": "a403fe88c3007909727c952bbc20c566", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40014, "upload_time": "2018-07-03T09:02:40", "url": "https://files.pythonhosted.org/packages/ce/11/bf12c9c28b29fe161070689e50425e088d75dfff3548fc25cb2356e6adde/serpextract-meiqia-2018.7.3.1.tar.gz" } ], "2019.1.15.0": [ { "comment_text": "", "digests": { "md5": "de5384ceaab8cb30151b6bc3160bfac5", "sha256": "4e6262b630ae50723fa3b3e952eee19a26cd07b39ee20e77528e974ec9e85b54" }, "downloads": -1, "filename": "serpextract_meiqia-2019.1.15.0-py2-none-any.whl", "has_sig": false, "md5_digest": "de5384ceaab8cb30151b6bc3160bfac5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 39797, "upload_time": "2019-03-15T04:09:11", "url": "https://files.pythonhosted.org/packages/e6/1a/200f236b7fdd1fef91651950ffb9c3225a77358a860c8af5e9dab2f95b07/serpextract_meiqia-2019.1.15.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "891a5a3f9e22e29731a7a22ea2554980", "sha256": "88ca498c1b29d9e1a73f9c133f332f3f983b5e5da125ea28dcec14dd3f9cbb49" }, "downloads": -1, "filename": "serpextract-meiqia-2019.1.15.0.tar.gz", "has_sig": false, "md5_digest": "891a5a3f9e22e29731a7a22ea2554980", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42924, "upload_time": "2019-03-15T04:09:13", "url": "https://files.pythonhosted.org/packages/8a/02/343b9d582592857cb4e68f0369f55dd00fff119f154d0cf474b449436f57/serpextract-meiqia-2019.1.15.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "de5384ceaab8cb30151b6bc3160bfac5", "sha256": "4e6262b630ae50723fa3b3e952eee19a26cd07b39ee20e77528e974ec9e85b54" }, "downloads": -1, "filename": "serpextract_meiqia-2019.1.15.0-py2-none-any.whl", "has_sig": false, "md5_digest": "de5384ceaab8cb30151b6bc3160bfac5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 39797, "upload_time": "2019-03-15T04:09:11", "url": "https://files.pythonhosted.org/packages/e6/1a/200f236b7fdd1fef91651950ffb9c3225a77358a860c8af5e9dab2f95b07/serpextract_meiqia-2019.1.15.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "891a5a3f9e22e29731a7a22ea2554980", "sha256": "88ca498c1b29d9e1a73f9c133f332f3f983b5e5da125ea28dcec14dd3f9cbb49" }, "downloads": -1, "filename": "serpextract-meiqia-2019.1.15.0.tar.gz", "has_sig": false, "md5_digest": "891a5a3f9e22e29731a7a22ea2554980", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42924, "upload_time": "2019-03-15T04:09:13", "url": "https://files.pythonhosted.org/packages/8a/02/343b9d582592857cb4e68f0369f55dd00fff119f154d0cf474b449436f57/serpextract-meiqia-2019.1.15.0.tar.gz" } ] }