NEWScrapingAnt MCP for Claude Code, Cursor & Windsurf — try it free →
Skip to main content

269 posts tagged with "web scraping"

View All Tags

Scrape a Dynamic Website with Go

· 16 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Scrape a Dynamic Website with Go

Web scraping has become an essential technique for data extraction, particularly with the rise of dynamic websites that deliver content through AJAX and JavaScript. Traditional methods of web scraping often fall short when dealing with these modern web architectures, necessitating more advanced approaches. Using the Go programming language for web scraping offers several advantages, including high performance, robust concurrency support, and a growing ecosystem of libraries specifically designed for this task.

Go, often referred to as Golang, is a statically typed, compiled language that excels in performance and efficiency. Its compilation to machine code results in faster execution times compared to interpreted languages like Python. This is particularly beneficial for large-scale web scraping projects where speed and resource utilization are critical. Additionally, Go's built-in support for concurrency through goroutines enables developers to scrape multiple web pages concurrently, making it highly scalable.

This report delves into the techniques and best practices for scraping dynamic websites using Go. It covers essential topics such as identifying and mimicking AJAX requests, utilizing headless browsers, and handling infinite scrolling. Furthermore, it provides insights into managing browser dependencies, optimizing performance, and adhering to ethical scraping practices. By the end of this report, you will have a comprehensive understanding of how to effectively scrape dynamic websites using Go, leveraging its unique features to build efficient and scalable web scraping solutions.

Scrape a Dynamic Website with PHP

· 10 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Scrape a Dynamic Website with PHP

Dynamic websites have become the norm in modern web development, providing interactive and personalized experiences by generating content on-the-fly based on user interactions, database queries, or real-time data. Unlike static websites that serve pre-built HTML pages, dynamic sites rely heavily on server-side processing and client-side JavaScript to deliver tailored content. This dynamic nature poses significant challenges when it comes to web scraping, as traditional methods of parsing static HTML fall short.

Dynamic websites often utilize sophisticated JavaScript frameworks such as React, Angular, and Vue.js, and technologies like AJAX to update content asynchronously without refreshing the page. This complexity requires advanced scraping techniques that can handle JavaScript execution, asynchronous loading, user interaction simulation, and more. To effectively scrape dynamic websites using PHP, developers need to leverage tools such as headless browsers, API-based solutions, and JavaScript engines.

This guide offers a comprehensive overview of the challenges and techniques involved in scraping dynamic websites with PHP. It explores various tools and methods, including Puppeteer, Selenium, Symfony Panther, and WebScrapingAPI, providing practical code examples and best practices to ensure successful data extraction.

How to read from MongoDB to Pandas

· 9 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

How to read from MongoDB to Pandas

The ability to efficiently read and manipulate data is crucial for effective data analysis and application development. MongoDB, a leading NoSQL database, is renowned for its flexibility and scalability, making it a popular choice for modern applications. However, to leverage the full potential of MongoDB data for analysis, it is essential to seamlessly integrate it with powerful data manipulation tools like Pandas in Python.

This comprehensive guide delves into the various methods of reading data from MongoDB into Pandas DataFrames, providing a detailed roadmap for developers and data analysts. We will explore the use of PyMongo, the official MongoDB driver for Python, which allows for straightforward interactions with MongoDB. Additionally, we will discuss PyMongoArrow, a tool designed for efficient data transfer between MongoDB and Pandas, offering significant performance improvements. For handling large datasets, we will cover chunking techniques and the use of MongoDB's Aggregation Framework to preprocess data before loading it into Pandas.

Guide to Scraping and Storing Data to MongoDB Using Python

· 15 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Guide to Scraping and Storing Data to MongoDB Using Python

Data is a critical asset, and the ability to efficiently extract and store it is a valuable skill. Web scraping, the process of extracting data from websites, is a fundamental technique for data scientists, analysts, and developers. Python, with its powerful libraries such as BeautifulSoup and Scrapy, provides a robust environment for web scraping. MongoDB, a NoSQL database, complements this process by offering a flexible and scalable solution for storing the scraped data. This comprehensive guide will walk you through the steps of scraping web data using Python and storing it in MongoDB, leveraging the capabilities of BeautifulSoup, Scrapy, and PyMongo. Understanding these tools is not only essential for data extraction but also for efficiently managing and analyzing large datasets. This guide is designed to be SEO-friendly and includes detailed explanations and code samples to help you seamlessly integrate web scraping and data storage into your projects. (source, source, source, source, source)

Guide to Cleaning Scraped Data and Storing it in PostgreSQL Using Python

· 15 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Guide to Cleaning Scraped Data and Storing it in PostgreSQL Using Python

In today's data-driven world, the ability to efficiently clean and store data is paramount for any data scientist or developer. Scraped data, often messy and inconsistent, requires meticulous cleaning before it can be effectively used for analysis or storage. Python, with its robust libraries such as Pandas, NumPy, and BeautifulSoup4, offers a powerful toolkit for data cleaning. PostgreSQL, a highly efficient open-source database, is an ideal choice for storing this cleaned data. This research report provides a comprehensive guide on setting up a Python environment for data cleaning, connecting to a PostgreSQL database, and ensuring data integrity through various cleaning techniques. With detailed code samples and explanations, this guide is designed to be both practical and SEO-friendly, helping readers navigate the complexities of data preprocessing and storage with ease (Python Official Website, Anaconda, GeeksforGeeks).

Crawlee for Python Tutorial with Examples

· 9 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Crawlee for Python Tutorial with Examples

Web scraping has become an essential tool for data extraction in various industries, from market analysis to academic research. One of the most effective libraries for Python available today is Crawlee, which provides a robust framework for both simple and complex web scraping tasks. Crawlee supports various scraping scenarios, including dealing with static web pages using BeautifulSoup and handling JavaScript-rendered content with Playwright. In this tutorial, we will delve into how to set up and effectively use Crawlee for Python, providing clear examples and best practices to ensure efficient and scalable web scraping operations. This comprehensive guide aims to equip you with the knowledge to build your own web scrapers, whether you are just getting started or looking to implement advanced features. For more detailed documentation, you can visit the Crawlee Documentation and the Crawlee PyPI.

How to Read HTML Tables With Pandas read_html() (pandas 3, Tested)

· 19 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

How to Read HTML Tables With Pandas read_html() (pandas 3, Tested)

Updated 2026-09-17

Re-tested on pandas 3.0.5, where pd.read_html("<table>…") with a raw string no longer works. Every option on this page now runs against one fixture page with eleven tables in the evidence packet, with the DataFrame output shown. The old page's df.append, chunksize= and usecols= recipes, which do not run on pandas 2.0 or later, are shown failing and replaced.

pandas.read_html() finds every <table> in a page and returns a list of DataFrames. It takes a file path, a URL, or a file-like object (StringIO around HTML you already have; a raw string no longer works on pandas 3). The three-line version, on a file:

import pandas as pd
PAGE = "fixtures/tables.html"
tables = pd.read_html(PAGE)
print("file:", len(tables), "tables; shapes:", [df.shape for df in tables])
print(tables[0])
file: 12 tables; shapes: [(3, 3), (3, 4), (2, 5), (3, 3), (2, 3), (2, 3), (2, 2), (2, 2), (5, 2), (2, 2), (3, 2), (3, 3)]
Name Age City
0 Ada 36 London
1 Grace 45 Arlington
2 Linus 28 Helsinki

The same call on HTML you already hold, and on a URL:

pd.read_html(StringIO(html)): 12
pd.read_html(open(PAGE, 'rb')): 12
pd.read_html(URL): 12

The rest of this page is what happens after that line: how to get the one table you want, why headers, numbers and links come out the way they do, which parser is running, why a Wikipedia URL returns 403, and which idioms from older tutorials (including the 2024 version of this page) raise on pandas 3.

How to Parse XML in C++: Tested Examples and Library Choices

· 13 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

How to Parse XML in C++

Updated 2026-10-07

Replaced placeholder code with compiled C++17 examples and captured failure cases, corrected the TinyXML-2 naming and documentation links, and removed unsupported speed comparisons and unrelated compiler theory. Download the tested source, fixtures, and outputs.

To parse XML in C++, use a library to read the document, check the parse result, and then validate the fields your application requires. A successful parse alone does not tell you whether a record has a title, whether an ID is an integer, or whether the document is safe to process.

This guide starts with a complete pugixml file parser that extracts book IDs and titles. A smaller TinyXML-2 example shows how to parse a string. The library comparison explains when to move to Xerces-C++, libxml2, or libxml++ for namespaces, validation, or streaming. No scraping API is needed to parse XML you already have.

Web Scraping with Haskell - A Comprehensive Tutorial

· 14 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

Web Scraping with Haskell - A Comprehensive Tutorial

Web scraping has become an essential tool for data extraction from websites, enabling developers to gather information for various applications such as market research, competitive analysis, and content aggregation. Haskell, a statically-typed, functional programming language, offers a robust ecosystem for web scraping through its strong type system, concurrency capabilities, and extensive libraries. This guide aims to provide a comprehensive overview of web scraping with Haskell, covering everything from setting up the development environment to leveraging advanced techniques for efficient and reliable scraping.

How to Parse HTML in C++

· 15 min read
Oleg Kulyk
Co-Founder @ ScrapingAnt

How to Parse HTML in C++

HTML parsing is a fundamental process in web development and data extraction. It involves breaking down HTML documents into their constituent elements, allowing for easy manipulation and analysis of the structure and content. In the context of C++, HTML parsing can be particularly advantageous due to the language's high performance and low-level control. However, the process also presents challenges, such as handling nested elements, malformed HTML, and varying HTML versions.

This comprehensive guide aims to provide an in-depth exploration of HTML parsing in C++. It covers essential concepts such as tokenization, tree construction, and DOM (Document Object Model) representation, along with practical code examples. We will delve into various parsing techniques, discuss performance considerations, and highlight best practices for robust error handling. Furthermore, we will review some of the most popular HTML parsing libraries available for C++, including Gumbo Parser, libxml++, Boost.Beast, MyHTML, and TinyXML-2, to help developers choose the best tool for their specific needs.