
Closed
Posted
Paid on delivery
Title: Python crawler for Norwegian municipal case archive (Saksinnsyn) — Docker, Postgres, resume, provenance Brief: I need a senior Python developer to build a polite, resumable crawler for Oslo municipality's public building-case archive ([login to view URL]). Plain HTTP (requests/httpx + lxml), no browser automation. I have a working single-file prototype (v0.29) that covers discovery, case pages, journalpost lists, attachment download, manifest and block detection; you may reuse or rewrite it, your choice, the price is fixed either way. Scope Discover all byggesaker 2019–present via the site's search (I'll give you the working query patterns and the case-number rules, which differ before/after 2025 and must be config per source and year, not hardcoded). Per case: save the raw case page HTML plus parsed fields (saksnummer as shown + normalized, title, sakstype, status, dates, address, gnr/bnr, unit). Per case: full journalpost list, raw HTML + parsed rows (number, date, title, inn/ut/intern, sender/recipient). Per journalpost: every attachment (file id, filename, file). Items that are login-gated or withheld are recorded with status and reason, not fetched. Linked cases (kobling): record the link and fetch the linked case. Every download logged: URL, time, HTTP status, size, sha256, run id. Output: raw files on disk (verbatim, never rewritten) plus a Postgres table case → journalpost → document → file → status (fetched / gated / withheld / missing / blocked). Idempotent and resumable: re-running never duplicates; stop/start any time. Multi-municipality by design: every record carries kommunenr and source; Oslo fetching is one module behind a common data model. Nothing downstream may know about Oslo's pages. Delivered as Docker Compose (crawler + Postgres) running on my Windows PC, CLI-driven. No web UI. Site behaviour you must handle (this is the hard part) The server intermittently blocks file downloads ([login to view URL]) with a captcha page or a redirect to ID-porten login. This is server-side and not IP-based; it also hits a normal browser. Required behaviour: detect both responses, mark the file blocked with reason/time/response hash, keep fetching metadata pages (which stay open), probe at most once per hour, resume automatically when the gate reopens. Fixed User-Agent string that I supply, single session, rate limit configurable (default 1 request / 3 s), daily file budget configurable. No captcha solving, no ID-porten automation, no proxy/IP/session/User-Agent rotation. Bids that propose any of these will not be considered. I'll test this with a mock server returning the block page. Acceptance End-to-end run on 200 cases I specify produces the status table and matching files. Full 2024 run matches sha256 of ~3,200 files I already hold. Block simulation: crawler stops, logs, resumes, no duplicates. Terms Fixed price, milestones 30% start / 40% at 200-case run / 30% at 2024 verified. Code in my GitHub repo from day one, IP assigned to me. Timeline 3 weeks. You should have: 5+ years Python, prior crawling of government or public-sector archives, Postgres, Docker. Say in your bid what you'd do when the crawler gets the captcha page — I read that line first.
Project ID: 40739073
154 proposals
Remote project
Active 11 hours ago
Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs
154 freelancers are bidding on average $496 USD for this job

Hello, I am a senior Python developer with extensive experience in building web crawlers for public sector archives. Your project for creating a Python crawler for the Norwegian municipal case archive aligns perfectly with my skill set and expertise. I understand the complexity of the project and the specific requirements you have outlined. My approach would involve leveraging Python with libraries like requests and lxml to crawl the Oslo municipality's case archive efficiently. I will ensure the crawler is polite, resumable, and capable of handling the challenges posed by the server-side blocks on file downloads without resorting to captcha solving or ID-porten automation. By utilizing Docker and Postgres, I will deliver a robust solution that saves raw case page HTML, parsed fields, journalpost lists, attachments, and linked cases while maintaining idempotency and resumability. The output will include a structured Postgres table for easy access and reference. I am confident in my ability to meet your expectations and deliver a high-quality solution within the specified timeline. Let's discuss further details in the chat to ensure a successful collaboration. Sincerely, Rajesh
$500 USD in 10 days
9.5
9.5

Hi, I'm Elias, a Miami-based senior software engineer with 20 years of experience specializing in web scraping and data extraction. I understand you want to build a Python crawler for the Norwegian municipal case archive (Saksinnsyn). Your main goal appears to be automating the retrieval and archiving of municipal cases efficiently. I have built similar systems focusing on secure architecture, scalable performance, and clean user experience. My approach to this project would involve: 1) Understanding the specific data requirements and workflows. 2) Designing a robust architecture using Docker and PostgreSQL. 3) Developing the crawler with a focus on data extraction and storage. 4) Testing rigorously to ensure data integrity and performance. 5) Deploying the solution and providing ongoing support. Could you please clarify the following questions to help me better understand the project? 1) What specific data points do you need to extract from the case archive? 2) Are there any particular challenges or edge cases you've encountered? 3) What are the expected user roles and permissions for accessing the archived data? I have successfully completed similar projects before, though most were under NDA, so I can’t share specifics publicly. However, I’d be happy to discuss the architecture and technical decisions in detail. I can also ensure a maintainable codebase that is easy to adapt and extend as your needs evolve.
$500 USD in 5 days
8.7
8.7

Hi, I am Adeel. When the crawler hits the captcha or ID-porten redirect, I mark that file blocked with reason, timestamp and a hash of the response, keep the metadata crawl running, and requeue the file for a single probe an hour later until the gate reopens. No retries beyond that, no rotation, no solving. I have built data pipelines on the same core, Python extraction feeding Postgres with Docker Compose for deployment, including download logging by URL, status, size and checksum for audit and resume. I would model your case, journalpost, document and file states as one status table from the start so multi-municipality is just another source value, never a branch in the code. Your v0.29 prototype is a good base. I would review it first, keep what already works, and rebuild the discovery and gate logic around your config-per-source-and-year rule. Can you share the prototype and the search query patterns before I size the 200-case milestone?
$250 USD in 3 days
8.3
8.3

PYTHON EXPERT YES its sound perfect as per my background---Got the given description--------------- Highly appreciative to work on this -----------Please come over to chat for the quick discussion. Thanks!!
$500 USD in 7 days
8.1
8.1

Hi — Puru here from ErgoSphere. You're essentially building a sophisticated, resumable Python crawler to archive building cases from the Oslo municipality, with robust handling of server-side restrictions like captchas and redirects. What usually matters most here is resilient handling of intermittent server blocks and ensuring the crawler is fully idempotent and resumable, especially in a multi-municipality setup. I'd recommend using a Python-based stack with `requests`/`httpx` and `lxml` for HTTP interactions and parsing, alongside Docker and Postgres for deployment and data management. Your existing prototype could serve as a foundation, but I'd ensure it adheres to a modular architecture to support multi-source flexibility. Sensitive data like User-Agent strings should be configurable, preventing hardcoding. For handling captchas, implementing a detection mechanism to log and pause attempts is crucial, ensuring compliance with your constraints. I've worked on AI-driven data extraction, scalable web scraping, and automation projects, so this aligns well with my experience. A few questions to better understand the scope: Q1 – What variations in query patterns should be anticipated post-2025? Q2 – Can you detail how linked cases should be processed within the data model? Q3 – Is there any specific format required for the Postgres output beyond what's described? A working prototype could reasonably be targeted within 2–3 weeks, followed by a polished release in roughly 4 weeks depending on testing outcomes and site behavior variability. Looking forward to hearing from you.
$750 USD in 7 days
8.1
8.1

Hi, I can help you with "Python Crawler for Building Case Archive" as per your given project description. We can discuss more in detail during a chat conversation when you are available. I've worked on many PHP projects in recent times. So I am confident on achieving your expected Goals. Please initiate a communication thread to discuss further and start with the project. ⭐ 5.0/5 from a recent client: "Good work delievered thank you for your patience" Final timeline and cost will be confirmed in chat after a complete understanding and documentation of the project expectations in detail.
$450 USD in 9 days
7.6
7.6

Hello!, This is James from Hollywood... I read your project carefully, and the real challenge here is not just scraping pages, but building a crawler that can reliably work with a Norwegian municipal case archive, keep its place with resume support, and store clean data in Postgres inside Docker without breaking when the site changes a little. My approach: 1. Map the archive flow and identify the request pattern behind Saksinnsyn 2. Build a robust Python crawler with session handling, retries, and resume checkpoints 3. Save structured data into PostgreSQL with deduping and logging 4. Package everything in Docker so it runs consistently and is easy to maintain I pay attention to the small details that usually decide whether these jobs succeed or fail. If there is login, rate limiting, hidden API behavior, or anti-bot protection, I’ll handle it properly instead of forcing a fragile script. Quick questions: 1. Does the archive require login or a specific access role? 2. What exact fields do you want stored from each case? 3. Should this run on a schedule, or is it a one-time backfill with resume support? Relevant work I’ve done includes archive-style data extraction for a legal document portal, a Dockerized Python scraper with Postgres storage for a public records system, and a municipal listing crawler with checkpoint/resume logic. If you want, I can start by outlining the crawl flow and data model before coding, so we avoid rework later.
$600 USD in 3 days
6.9
6.9

Hi, I’m a senior Python developer experienced in building reliable crawlers, REST APIs, PostgreSQL data pipelines, and Docker-based applications. For captcha or ID-porten responses, I’ll detect the response, record its status, timestamp, and hash, pause file fetching, and automatically retry no more than once per hour while continuing metadata collection. No captcha solving, proxy rotation, or browser automation. I’ll build this with HTTPX, lxml, PostgreSQL, and Docker Compose, ensuring idempotent storage, resumability, SHA-256 verification, and complete download provenance. I’m comfortable with your fixed-price milestones, GitHub workflow, and 3-week timeline. Best regards
$1,200 USD in 21 days
7.1
7.1

Hi there, I see that you're looking for a Python developer to build a crawler for Oslo municipality's case archive. Given your requirement for plain HTTP requests with no browser automation, I can leverage my extensive experience with Python and data extraction techniques to develop a scalable solution. The crawler will be able to handle the complexities of capturing case data since 2019 and ensure idempotency, as you specified. For the issue of handling intermittently blocked downloads and captcha responses, I would implement logic to log these occurrences and continue fetching metadata while adhering to your rate limits. This way, we can ensure a smooth data-gathering process even under the constraints you've outlined. I look forward to discussing how we can efficiently tackle this project and deliver according to your milestones. Regards, Ali
$500 USD in 20 days
6.5
6.5

A resumable crawl over a municipal case archive means the hard part isn't fetching listings, it's surviving thousands of PDF attachments and a pagination scheme that forgets where you were between runs. I'd store a cursor per municipality plus a content hash per document in Postgres, so a restart resumes instead of re-downloading, and every insert stays idempotent. Docker wraps it as one container with migrations on startup, so whoever runs it later doesn't have to babysit a script. Most of the effort here is defensive: per-municipality rate limiting, retry with backoff on partial files, and logging the failures so you can see coverage gaps instead of discovering them months later. I architect systems with 150+ external service integrations, so flakiness at the edges is what I plan for first. How many municipalities are in scope, and is this a one-time archive build or something that needs to keep pulling new cases?
$250 USD in 7 days
6.7
6.7

Hi, I'm Denis, a full-stack developer experienced in building data crawlers for public archives and government systems. I understand your project: a robust, resumable crawler that respects rate limits and handles server-side blocking gracefully. The core challenge is detecting blocking behavior. When the server returns a captcha or login redirect, the crawler must detect it reliably, log the block reason and timestamp, then pause retrying that file for an hour. The key is distinguishing blocked responses from legitimate 200 or 404 status codes by checking response content and headers—no rotation or solving needed. I've built similar systems where crawlers respect server constraints while maintaining data integrity across restarts. Idempotency is straightforward: key everything on case number, journalpost number, and file ID, then check Postgres before fetching to avoid duplication. My approach: start with your prototype to understand the site structure, then build a modular crawler with a common data model abstracting Oslo-specific logic. Store raw files as-is, parse into the case → journalpost → document → file schema, and implement resumable logic at the file level. Docker Compose with Postgres handles the environment, while configuration for case rules, rate limits, and daily budgets stays external. The main risk is if HTML structure or blocking behavior changes between test and full 2024 runs. We'll validate against your 200-case set and existing sha256 hashes before
$250 USD in 5 days
6.4
6.4

Hello, "PYTHON CRAWLER FOR BUILDING CASE ARCHIVE" - you need a reliable crawler that can process large public archives, preserve provenance, and resume safely when file downloads become blocked. When the crawler receives the CAPTCHA or ID-porten response, I would detect and classify it immediately, record the block reason, timestamp, response hash, and file status, then continue processing accessible metadata without retrying aggressively. The blocked file would be probed only according to the configured interval and automatically resume when the gate reopens. I’ll build the Python crawler with configurable discovery rules, raw HTML preservation, structured parsing, attachment tracking, SHA-256 logging, PostgreSQL relations, idempotent/resumable runs, linked-case handling, rate limits, and daily download budgets. Docker Compose will keep the crawler and database reproducible and ready for future municipalities. I have experience with Python, web scraping, HTTP, data extraction, PostgreSQL, Docker, software architecture, and automation of structured web data pipelines, which fits this archive workflow and its provenance requirements. Best regards Aleksandar
$480 USD in 5 days
6.3
6.3

Hi, I got that you are looking for a senior Python developer to build a polite, resumable crawler for the Norwegian municipal case archive using Docker, Postgres, resume, and provenance. This is what I can help you with, let's chat. My approach is to utilize a combination of Python with requests/httpx and lxml for crawling the Oslo municipality's public building-case archive. I will focus on developing a robust crawler that can handle the intermittent blocking of file downloads by detecting responses, marking blocked files, and automatically resuming when the gate reopens. By implementing a fixed User-Agent string, rate limiting, and daily file budget configurations, the crawler will efficiently navigate through the site's behavior challenges. As final deliverables, you will receive a Docker Compose setup running the crawler and Postgres on your Windows PC, CLI-driven. The output will consist of raw files stored on disk and a structured Postgres table containing case, journalpost, document, file, and status information. One thing I'd like to confirm before we start: How would you like the crawler to handle cases where the file downloads are login-gated or withheld? Looking forward to discussing the project further with you. Regards, Imran
$250 USD in 1 day
5.9
5.9

Hey there, I see you’re looking to build a Python crawler for a Norwegian municipal case archive. It sounds like a fascinating project aimed at streamlining access to public records. From what I gather, you want to leverage Docker and PostgreSQL for data extraction and storage, which makes perfect sense for scalability and performance. I'd love to clarify a few aspects, like the specific data points you're targeting and any particular compliance requirements for handling municipal data. To reduce risks, I suggest a phased approach: starting with a minimal viable product to test the core functionality, then iterating based on feedback. I have experience with similar projects, including a regional booking platform for a tutoring company, an internal CRM for a property agency, and a React Native field-reporting app. Looking forward to hearing more about your vision!
$500 USD in 5 days
6.6
6.6

To handle the captcha page, I’ll detect it by matching the response content hash and signature, then mark the file as blocked with timestamp and reason. The crawler will keep fetching metadata and stop downloads for that file until an hour passes, then retry automatically. This matches your requirements without captcha solving or IP/User-Agent tricks. I’d start by reviewing your prototype and extracting reusable parts for parsing and state tracking. My focus will be on robust session handling with a fixed User-Agent and precise rate limiting. For the case-number rules, I’ll implement config-based logic per source and year so it's easy to extend beyond Oslo later. Should the crawler encounter new block patterns or page layout changes, is your mock server setup flexible enough for me to test those quickly? Also, do you want incremental logging of progress (e.g. every 50 cases) for better monitoring? I’ve built similar resumable scrapers for a public archive with complex login gating and varying case numbering, and implemented a layered Postgres schema tracking files and their status. I’ll containerize everything with Docker Compose for your Windows environment and prioritize clear CLI controls. Ready to begin immediately and deliver complete milestones on time.
$250 USD in 7 days
5.9
5.9

A blocked file download on a site like this usually arrives as an HTTP 200 with an HTML page where the PDF should be, or as a 302 to ID-porten, so the status code alone won't tell you it's blocked. I'd check content type and magic bytes against what the link promised. On a mismatch or redirect, the crawler marks the file blocked with reason, time and response hash. It keeps fetching metadata pages and probes once an hour, and downloads resume on their own once the block clears. No solving, no rotation, no bypass. I'd also build a small mock server that serves captcha and ID-porten style block pages on demand, so your simulation test passes from day one. Raw HTML and files are stored verbatim. The Postgres model runs case, journalpost, document, file, with status on the file row. Everything runs in Docker Compose with a per-host rate limit, and it resumes from the database after a restart. M1: fetcher, raw storage, block detection, mock server, $250, 4 days M2: case to file parsing, Postgres schema, resumable queue, $250, 5 days M3: Compose setup, hourly probe, politeness tuning, docs, $250, 5 days The $750 is a starting number off the brief. How many cases you need and how the real pages are laid out will decide if it holds, so I'll firm it up once I've seen a sample. Send me a few case URLs and I'll start with M1, which proves the block handling against the mock before anything else gets built.
$750 USD in 14 days
6.0
6.0

When the crawler gets the captcha page, I’ll detect it from the response, record the block reason/time/hash, skip that file, and continue processing the open metadata pages; I’ll retry it no more than once per hour without changing IPs, sessions, or headers. I can build the Python/Postgres crawler in Docker with proper provenance, SHA256 tracking, idempotent resume, and the 2024 verification, while keeping the code in your GitHub repo from day one.
$500 USD in 7 days
6.0
6.0

Hi, I see you're looking to develop a Python crawler for the Oslo municipality's public building-case archive using plain HTTP methods. Your existing prototype version 0.29 already covers discovery and case page access, which provides a great starting point for further development. The main challenge here is ensuring the crawler is both polite and resumable, especially given the potentially large dataset and potential for server-side request limitations. My approach would involve implementing robust error handling and state management to resume operations seamlessly after interruptions. Prioritizing stability and efficiency will be key to managing the data extraction process without overloading the server. With extensive experience in Python and web scraping, particularly using libraries like requests and lxml, I've successfully developed similar solutions that handle large-scale data retrieval and integration with databases like Postgres. Q1 – Could you clarify the specific data fields required from each case page? Q2 – Are there any rate limiting constraints or politeness policies specified by the archive provider? Q3 – How should the crawler handle updates or changes to existing case records? Looking forward to hearing from you.
$250 USD in 7 days
5.8
5.8

Dear Client, I read "Python Crawler for Building Case Archive" carefully and understand you are looking for a full-stack developer who can handle both application development and AI integration. I have experience with PHP, Python, Web Scraping, PostgreSQL and can work across the complete stack — frontend, backend, APIs, databases, authentication, third-party integrations and AI features. I can build scalable applications using modern technologies while keeping the codebase maintainable and production-ready. A few quick questions: Which AI models/APIs are you currently planning to use? Is there an existing application/codebase, or will the project be built from scratch? Thanks & Regards, Deepak
$488 USD in 14 days
5.7
5.7

<<<✔Consider it DONE✔>>> YO! I understand your project and I'm eager to help. I am glad to introduce myself, LUI, as an exceptional Python professional who can effectively handle your project. I have over 5 years of experience working with Python and have previously crawled Government and public-sector databases, giving me a profound understanding of the complexity involved in such tasks. Additionally, my grasp of Docker and Postgres aligns perfectly with your requirements which will ensure smooth and efficient completion of the project while maintaining resumable functionality. Looking forward to being part of your project! You will surely be impressed by my work! Not sure what the next step is? I offer free and professional consultation -- I'm just a text away. All the very best, Josh
$500 USD in 2 days
5.5
5.5

OSLO, Norway
Payment method verified
Member since Aug 25, 2020
$1500-3000 USD
$30-250 USD
$30-250 USD
$30-250 USD
$15-25 USD / hour
$750-1500 USD
$25-50 USD / hour
$15-25 USD / hour
₹1500-12500 INR
$30-250 USD
₹12500-37500 INR
$750-1500 USD
₹12500-37500 INR
$500-3000 USD
$250-750 USD
$10-30 USD
$250-750 USD
£250-750 GBP
min $50 AUD / hour
₹600-1500 INR
₹1500-12500 INR
₹750-1250 INR / hour
€3000-5000 EUR
$3000-5000 USD