Friday, 21 July 2017

Scraping Dynamic Websites: How We Tackle the Problem

Scraping Dynamic Websites: How We Tackle the Problem

Acquiring data from the web for business applications has already gained popularity if we look at the sheer number of use cases. Companies have realized the value addition provided by data and are looking for better and efficient ways of data extraction. However, web scraping is a niche technical process that takes years to master given the dynamic nature of the web. Since every website is different and custom coded, it’s not possible to write a single program that can handle multiple websites. The web scraping setup should be coded separately for each target site and this needs a team of skilled programmers.

Web scraping is without doubt a complex trade; however if the target site in question employs dynamic coding practices, this complexity is further multiplied. Over the years, we have understood the technical nuances of web scraping and perfected our modus operandi to to scrape dynamic websites with high accuracy and efficiency. Here are some ways how we tackle the challenge of scraping dynamic websites.

1. Proxies

Some websites have different Geo/Device/OS/browser specific versions that they serve depending on the variables. This could give a great deal of confusion to the crawlers especially while figuring out how to extract the right version. This will need some manual work in terms of finding the different versions provided by the site and configuring proxies to fetch the right version as per the requirement. For geo-specific versions, the crawler is simply deployed on a server from where the required version of the site is accessible.

2. Browser automation

When it comes to websites that use very complex and dynamic code, it’s better have all the page content rendered using a browser first. Selenium can be used for browser automation which will help us do the scraping. It is essentially a handy toolkit that can drive the browser from your favorite programming language. Although it’s primarily used for testing, it can be used for scraping dynamic web pages. It can be used to control a web browser, which is how scraping using selenium is typically done. In this case, the browser first renders the page which will help overcome the problem of reverse engineering JavaScript code to fetch the page content. Once the page content is rendered, it is saved locally to scrape the required data points later. Although this is comparatively easy, there is a high chance of encountering errors while scraping using the browser automation method.

3. Handling POST requests

Many web pages will only display the data that we need after receiving a certain input from the user. Let’s say you are looking for used cars data from a particular geo-location on a classified site. The website would first require you to enter the ZIP code of the location from where you need listings from. This ZIP code must be sent to the website as a post request while scraping. We craft the post request using the appropriate parameters so as to reach the target page that contains all the data points to be scraped.

4. Manufacturing the JSON URL

There are dynamic web pages that use AJAX calls to load and refresh the page content. These are particularly difficult to scrape and extract data from as the triggers that make up the JSON file is difficult to trace. This requires a lot of manual inspection and testing, but once the appropriate parameters are identified, a JSON file that would fetch the target page which includes the desired data points can be manufactured. This JSON file is often tweaked automatically for navigation or fetching varying data points. Manufacturing the JSON URL with apt parameters is the primary pain point with web pages that use AJAX calls.

Scraping dynamic web pages is extremely complicated and demands deep expertise in the field of web scraping. It also demands an extensive tech stack and well-built infrastructure that can handle the complexities associated with web data extraction. With our years of expertise and well-evolved web scraping infrastructure, we cater to data requirements where dynamic web pages are involved on a daily basis.