{"id":15068898,"url":"https://github.com/maroontress/nugetscraper","last_synced_at":"2026-02-23T01:10:19.360Z","repository":{"id":220560090,"uuid":"620325634","full_name":"maroontress/NugetScraper","owner":"maroontress","description":"NugetScraper is an HTML parser that reads an HTML page retrieved from NuGet.org and provides a list containing NuGet packages released by a specified organization.","archived":false,"fork":false,"pushed_at":"2024-02-03T17:48:24.000Z","size":134,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T19:45:56.450Z","etag":null,"topics":["html","java11","nuget","scraper"],"latest_commit_sha":null,"homepage":"https://maroontress.github.io/NugetScraper/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maroontress.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-28T13:14:32.000Z","updated_at":"2023-04-23T11:24:58.000Z","dependencies_parsed_at":"2024-02-02T19:24:37.355Z","dependency_job_id":"0ff317a4-323d-49cf-8c94-985dac096907","html_url":"https://github.com/maroontress/NugetScraper","commit_stats":null,"previous_names":["maroontress/nugetscraper"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maroontress%2FNugetScraper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maroontress%2FNugetScraper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maroontress%2FNugetScraper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maroontress%2FNugetScraper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maroontress","download_url":"https://codeload.github.com/maroontress/NugetScraper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243837014,"owners_count":20355813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["html","java11","nuget","scraper"],"created_at":"2024-09-25T01:39:39.288Z","updated_at":"2025-10-24T17:32:10.263Z","avatar_url":"https://github.com/maroontress.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NugetScraper\n\nNugetScraper is an HTML parser that reads an HTML page retrieved from\n[NuGet.org] and provides a list containing NuGet packages released by a\nspecified organization.\n\n## Example\n\n[A typical usage example](src/test/java/com/example/Demo.java) would be as\nfollows:\n\n```java\n...\npublic final class Demo {\n\n    public static void run(String organizationName)\n            throws IOException, InterruptedException {\n        var urlBase = \"https://www.nuget.org\";\n        var id = URLEncoder.encode(organizationName, StandardCharsets.UTF_8);\n        var request = HttpRequest.newBuilder()\n                .uri(URI.create(urlBase + \"/profiles/\" + id + \"/\"))\n                .build();\n        var client = HttpClient.newHttpClient();\n        var response = client.send(request, HttpResponse.BodyHandlers.ofString());\n        var profile = NugetScraper.toProfile(response.body());\n\n        for (var i : profile.packageList()) {\n            System.out.println(i.title() + \":\" + i.totalDownloads());\n        }\n        var maybePath = profile.nextPageUrl();\n        if (maybePath.isPresent()) {\n            var path = maybePath.get();\n            if (!path.startsWith(\"/\")) {\n                throw new IllegalStateException(\"unexpected URL: \" + path);\n            }\n            var nextPageUrl = URI.create(urlBase + path);\n            System.out.println(\"The next page URL: \" + nextPageUrl);\n        }\n    }\n\n    public static void main(String[] args) {\n        if (args.length == 0) {\n            System.out.println(\"usage: java com.example.Demo ID\");\n            return;\n        }\n        var organizationName = args[0];\n        try {\n            run(organizationName);\n        } catch (IOException | InterruptedException e) {\n            System.out.println(\"failed (ignored)\");\n        }\n    }\n}\n```\n\nIn this example, the result of \"`java com.example.Demo Microsoft`\" (that\nrepresents the one of parsing [`https://nuget.org/profiles/Microsoft/`][nuget-microsoft]) will be as\nfollows:\n\n```plaintext\nMicrosoft.Extensions.Primitives:3179750929\nMicrosoft.NETCore.Platforms:3174900796\nMicrosoft.Extensions.DependencyInjection.Abstractions:3114882542\nSystem.Runtime.CompilerServices.Unsafe:2688797891\nMicrosoft.Extensions.Options:2661649028\nMicrosoft.Extensions.Logging.Abstractions:2638017167\nMicrosoft.Extensions.Configuration.Abstractions:2578117049\nSystem.Diagnostics.DiagnosticSource:2574167053\nSystem.Threading.Tasks.Extensions:2290236144\nMicrosoft.CSharp:2003285729\nSystem.Buffers:1987825889\nMicrosoft.Extensions.DependencyInjection:1958339674\nMicrosoft.Extensions.Configuration:1916727034\nMicrosoft.Extensions.FileProviders.Abstractions:1844208793\nMicrosoft.Extensions.Logging:1837702027\nSystem.Memory:1792564237\nMicrosoft.Extensions.Configuration.Binder:1668198620\nSystem.Security.Principal.Windows:1637388455\nMicrosoft.NETCore.Targets:1590023964\nSystem.Security.Cryptography.Cng:1539977932\nThe next page URL: https://www.nuget.org/profiles/Microsoft?page=2\n```\n\nNote that each number represents the total downloads at that time.\n\n\u003e 🚧 The structure of the HTML that `nuget.org` generates is subject to change.\n\u003e This parser will follow such changes in future releases.\n\n## API Reference\n\n- [com.maroontress.nugetscraper][apiref-maroontress.nugetscraper] module\n\n[NuGet.org]: https://nuget.org/\n[nuget-microsoft]: https://nuget.org/profiles/Microsoft/\n[apiref-maroontress.nugetscraper]:\n  https://maroontress.github.io/NugetScraper/api/latest/html/index.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaroontress%2Fnugetscraper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaroontress%2Fnugetscraper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaroontress%2Fnugetscraper/lists"}