Tuesday, 1 August 2017

How We Optimized Our Web Crawling Pipeline for Faster and Efficient Data Extraction

Big data is now an essential component of business intelligence, competitor monitoring and customer experience enhancement practices in most organizations. Internal data available in organizations is limited by its scope, which makes companies turn towards the web to meet their data requirements. The web being a vast ocean of data, the possibilities it opens to the business world are endless. However, extracting this data in a way that will make sense for business applications remains a challenging process.

The need for efficient web data extraction

Web crawling and data extraction is something that can be carried out through more than one route. In fact, there are so many different technologies, tools and methodologies you can use when it comes to web scraping. However, not all of these deliver the same results. While using browser automation tools to control a web browser is one of the easier ways of scraping, it’s significantly slower since rendering takes a considerable amount of time.

There are DIY tools and libraries that can be readily incorporated into the web scraping pipeline. Apart from this, there is always the option of building most of it from scratch to ensure maximum efficiency and flexibility. Since this offers far more customization options which is vital for a dynamic process like web scraping, we have a custom built infrastructure to crawl and scrape the web.

How we cater to the rising and complex requirements

Every web scraping requirement that we receive each day is one of a kind. The websites that we scrape on a constant basis are different in terms of the backend technology, coding practices and navigation structure. Despite all the complexities involved, eliminating the pain points associated with web scraping and delivering ready-to-use data to the clients is our priority.

Some applications of web data demand the data to be scraped in low latency. This means, the data should be extracted as and when it’s updated in the target website with minimal delay. Price comparison, for example requires data in low latency. The optimal method of crawler setup is chosen depending on the application of the data. We ensure that the data delivered actually helps your application, in all of its entirety.

How we tuned our pipeline for highly efficient web scraping

We constantly tweak and tune our web scraping infrastructure to push the limits and improve its performance including the turnaround time and data quality. Here are some of the performance enhancing improvements that we recently made.

1. Optimized DB query for improved time complexity of the whole system

All the crawl stats metadata is stored in a database and together, this piles up to become a considerable amount of data to manage. Our crawlers have to make queries to this database to fetch the details that would direct them to the next scrape task to be done. This usually takes a few seconds as the meta data is fetched from the database. We recently optimized this database query which essentially reduced the fetch time to merely a fraction of seconds from about 4 seconds. This has made the crawling process significantly faster and smoother than before.

2. Purely distributed approach with servers running on various geographies

Instead of using a single server to scrape millions of records, we deploy the crawler across multiple servers located in different geographies. Since multiple machines are performing the extraction, the load on each server will be significantly lower which in turn helps speed up the extraction process. Another advantage is that certain sites that can only be accessed from a particular geography can be scraped while using the distributed approach. Since there is a significant boost in the speed while going with the distributed server approach, our clients can enjoy a faster turnaround time.

3. Bulk indexing for faster deduplication

Duplicate records is never a trait associated with a good data set. This is why we have a data processing system that identifies and eliminates duplicate records from the data before delivering it to the clients. A NoSQL database is dedicated to this deduplication task. We recently updated this system to perform bulk indexing of the records which will give a substantial boost to the data processing time which again ultimately reduces the overall time taken between crawling and data delivery.

Bottom line

As web data has become an inevitable resource for businesses operating across various industries, the demand for efficient and streamlined web scraping has gone up. We strive hard to make this possible by experimenting, fine tuning and learning from every project that we embark upon. This helps us maintain a consistent supply of clean, structured data that’s ready to use to our clients in record time.