IP Library › Granted Patent US 12,743,473
Granted Patent B2
US 12,743,473 · App. 19/221,357 · Granted Sep 22, 2026

Data extraction approach for retail crawling engine

Inventors: Amit Aggarwal (Los Altos, CA); Andrey Zaytsev (Fort Collins, CO); Ruslan Gilfanov (Boulder, CO)
Assignee: Pinterest, Inc.
G06F16/951G06F16/986G06Q30/0201
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,743,473
App. No.
19/221,357
Granted
Sep 22, 2026
Kind
B2
Abstract

A computer system extracts product data from a website and correlates product records from multiple sources to one another as corresponding to the same product. A website is crawled efficiently by rendering webpages using a virtual browser that ignores blacklisted elements, extracts data from objects without rendering, and suppressing retrieval of remote resources. Data is extracted according to engine control statements including a selector and extractor. A website may be crawled repeatedly and changes in extracted data may be detected and flagged. Engine control statements may be automatically changed in response to detecting a change in the configuration of the website. Images of product records may be correlated with one another by first comparing text of the product records and selecting images for comparison based on composition. Images are compared using a machine learning model. Images determined to be similar may be presented to a human for a correlation decision.

Claims (80)

1 . A method for web crawling comprising:

retrieving a webpage including instructions for rendering a plurality of elements;

rendering a modified version of the webpage in a virtual browser, the rendering comprising processing each element of a first plurality of elements referenced in the webpage such that one or more resources referenced by an element are suppressed from being rendered in the modified version of the webpage;

traversing the first plurality of elements of the webpage to identify selected elements from the plurality of elements based at least in part on a set of extraction instructions;

applying the set of extraction instructions to the selected elements of the webpage to extract first selected data of the webpage according to the set of extraction instructions, wherein the selected data includes data describing a product;

applying the set of extraction instructions to a second plurality of elements of a prior version of the webpage to extract second selected data of the webpage;

generating, for a plurality of data types, metrics of the plurality of elements of the webpage at the inspection time, the metrics representing the at least a portion of the plurality of elements suppressed from being rendered, the metrics based on characteristics of the plurality of elements and include at least:

a first metric associated with a product description;

a second metric associated with a product price; and

a third metric associated with an image, wherein the third metric is generated at least in part by determining a vector representative of a composition of the image based at least in part on a segment mask associated with a feature represented in the image;

determining, for each of the plurality of data types, differences between the metrics and prior metrics generated for the webpage; and

in response to determining at least one difference exceeding a threshold:

generating a side-by-side comparison including a comparison of at least one of a portion of the product description, the product price, or the image; and

outputting the side-by-side comparison for display on a display device.

2 . The method of claim 1 , wherein rendering the webpage in the virtual browser such that rendering of the at least the portion of the plurality of elements is suppressed comprises:

refraining from retrieving data objects referenced by the at least the portion of the plurality of elements.

3 . The method of claim 2 , wherein identifying data in the webpage describing a product comprises storing references to the data objects in a set of extracted data obtained from the webpage.

4 . The method of claim 1 , wherein rendering the webpage in the virtual browser such that rendering of the at least the portion of the plurality of elements is suppressed comprises:

extracting data from the at least the portion of the plurality of elements without rendering the at least the portion of the plurality of elements.

5 . The method of claim 1 , wherein rendering the webpage in the virtual browser such that rendering of the at least the portion of the plurality of elements is suppressed comprises:

identifying the at least the portion of the plurality of elements as being referenced in a blacklist.

6 . The method of claim 1 , wherein the identifying the data in the webpage comprises:

traversing a document object model (DOM) hierarchy; and

identifying links to one or more product pages as being descendants of a predefined data structure in the DOM hierarchy.

7 . The method of claim 1 , wherein determining, for each of the plurality of data types, differences between the metrics and prior metrics generated for the webpage comprises calculating a similarity score based on the metrics and the prior metrics, wherein the side-by-side comparison is generated in response to the similarity score exceeding the threshold.

8 . The method of claim 1 , further comprising:

selecting a refresh rate to provide tracking over time of at least one of price or available inventory of the product featured in the webpage; and

selecting the inspection time based on a time of the prior version and the refresh rate.

9 . The method of claim 1 , wherein the generating the first metric further comprises:

comparing a first product record and a second product record modified using a normalizing process and using a field-wise comparison.

10 . The method of claim 1 , wherein the generating the third metric further comprises:

evaluating segment masks from a one or more machine learning models used to evaluate the image.

11 . A system comprising:

one or more processing devices; and

one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code that, when executed by the one or more processing devices, causes the one or more processing devices to at least:

retrieve a webpage including instructions for rendering a plurality of elements;

render a modified version of the webpage in a virtual browser comprising processing each element of a first plurality of elements referenced in the webpage such that one or more resources referenced by an element are suppressed from being rendered in the modified version of the webpage;

traverse the first plurality of elements of the webpage to identify selected elements from the plurality of elements based at least in part on a set of extraction instructions;

apply the set of extraction instructions to the selected elements of the webpage to extract first selected data of the webpage according to the set of extraction instructions, wherein the selected data includes data describing a product;

apply the set of extraction instructions to a second plurality of elements of a prior version of the webpage to extract second selected data of the webpage;

generate, for a plurality of data types, metrics of the plurality of elements of the webpage at the inspection time, the metrics representing the at least a portion of the plurality of elements refrained from being rendered, the metrics based on characteristics of the plurality of elements and include at least:

a first metric associated with a product description;

a second metric associated with a product price; and

a third metric associated with an image, wherein the third metric is generated at least in part by determining a vector representative of a composition of the image based at least in part on a segment mask associated with a feature represented in the image;

determine, for each of the plurality of data types, differences between the metrics and prior metrics generated for the webpage; and

in response to at least one of the differences exceeding a threshold:

generate a side-by-side comparison including a comparison of at least one of a portion of the product description, the product price, or the image; and

output the side-by-side comparison for display on a display device.

12 . The system of claim 11 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to:

refrain from retrieving data objects referenced by the at least the portion of the plurality of elements.

13 . The system of claim 12 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to:

identify data in the webpage describing a product by storing references to the data objects in a set of extracted data obtained from the webpage.

14 . The system of claim 11 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to:

extract data from the at least the portion of the plurality of elements without rendering the at least the portion of the plurality of elements.

15 . The system of claim 11 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to:

identify the at least the portion of the plurality of elements as being referenced in a blacklist.

16 . The system of claim 11 , wherein the executable code, when executed by the one or more processing devices, further causes the one or more processing devices to:

traverse a document object model (DOM) hierarchy; and

identify links to one or more product pages as being descendants of a predefined data structure in the DOM hierarchy.

17 . A system, comprising:

one or more processors; and

a memory coupled to the one or more processors and storing program instructions that, when executed by the one or more processors, cause the one or more processors to at least:

retrieve, at a first time, a webpage including instructions for rendering a first plurality of elements;

render a modified version of the webpage in a virtual browser comprising processing each element of a first plurality of elements referenced in the webpage such that one or more resources referenced by an element are suppressed from being rendered in the modified version of the webpage;

traverse the first plurality of elements of the webpage to identify selected elements from the plurality of elements based at least in part on a set of extraction instructions;

apply the set of extraction instructions to the selected elements of the webpage to extract first selected data of the webpage according to the set of extraction instructions, wherein the selected data includes data;

generate, for a plurality of data types, first metrics of the first plurality of elements of the webpage at the first time, the first metrics representing the at least a portion of the first plurality of elements refrained from being rendered, wherein the first metrics are generated at least in part by determining a first vector representative of a first composition of a first image included in the first plurality of elements based at least in part on a first segment mask associated with a first feature represented in the first image;

retrieve, at a second time, the webpage including the instructions for rendering a second plurality of elements;

generate, for the plurality of data types, second metrics of the second plurality of elements of the webpage at the second time, the second metrics representing the at least a portion of the second plurality of elements refrained from being rendered, wherein the second metrics are generated at least in part by determining a second vector representative of a second composition of a second image included in the second plurality of elements based at least in part on a second segment mask associated with a second feature represented in the second image;

determine, for at least one of the plurality of data types, a difference between the first metrics and the second metrics; and

in response to the difference exceeding a threshold:

generate a side-by-side comparison including a comparison of at least one of a portion of corresponding product descriptions, corresponding product prices, or corresponding images; and

output the side-by-side comparison for display on a display device.

18 . The computing system of claim 17 , wherein the program instructions further cause the one or more processors to at least:

identify data in the webpage describing a product;

select a refresh rate to provide tracking over time of at least one of price or available inventory of the product featured in the webpage; and

select the second time based on the first time and the refresh rate.

19 . The computing system of claim 17 , wherein the program instructions further cause the one or more processors to at least:

determine the threshold as a percentage difference between a data type of the first metrics and the second metrics, the percentage difference indicating at least a change in configuration of the webpage.

20 . The computing system of claim 17 , wherein the plurality of data types include at least one of price, inventory, imagery, descriptive text, or formatting controls.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2025
From: AGGARWAL, AMIT; ZAYTSEV, ANDREY; GILFANOV, RUSLAN
To: THE YES PLATFORM
Reel/Frame 071297/0951 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2025
From: THE YES PLATFORM, INC.
To: PINTEREST, INC.
Reel/Frame 071297/0957 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2025
From: THE YES PLATFORM
To: THE YES PLATFORM, INC.
Reel/Frame 071297/0982 →
Continuity (2)
Continuation 17486562 · Sep 27, 2021
Related Publication 20250291856A1 · Sep 18, 2025
References Cited (38)
US 6654734B1 · Mani et al. · 2003 [cited by applicant]
US 9323731B1 · Younes · 2016 [cited by examiner]
US 10460018B1 · Ravi · 2019 [cited by applicant]
US 10542021B1 · Mehr · 2020 [cited by applicant]
US 10552299B1 · Surace · 2020 [cited by examiner]
US 20050160014A1 · Moss et al. · 2005 [cited by applicant]
US 20060011720A1 · Call · 2006 [cited by applicant]
US 20070073599A1 · Perry et al. · 2007 [cited by applicant]
US 20080098300A1 · Corrales et al. · 2008 [cited by applicant]
US 20100211377A1 · Aoyama et al. · 2010 [cited by applicant]
US 20110066662A1 · Davis · 2011 [cited by applicant]
US 20120102046A1 · Tamano · 2012 [cited by applicant]
US 20130024441A1 · Sun et al. · 2013 [cited by applicant]
US 20140129920A1 · Sheretov et al. · 2014 [cited by applicant]
US 20160103861A1 · Jacob · 2016 [cited by applicant]
US 20160225053A1 · Romley et al. · 2016 [cited by applicant]
US 20170330081A1 · Lindsley · 2017 [cited by applicant]
US 20180129905A1 · Soundararajan et al. · 2018 [cited by applicant]
US 20180150562A1 · Gundimeda et al. · 2018 [cited by applicant]
US 20180150869A1 · Finnegan et al. · 2018 [cited by applicant]
US 20180197223A1 · Grossman · 2018 [cited by applicant]
US 20180322103A1 · Yeo et al. · 2018 [cited by applicant]
US 20190034441A1 · Capon · 2019 [cited by examiner]
US 20190043095A1 · Grimaud et al. · 2019 [cited by applicant]
US 20190171902A1 · Yamaguchi et al. · 2019 [cited by applicant]
US 20190190946A1 · Nagaraja et al. · 2019 [cited by applicant]
US 20190278814A1 · Sachdev et al. · 2019 [cited by applicant]
US 20190356948A1 · Stojancic et al. · 2019 [cited by applicant]
US 20200252413A1 · Buzbee et al. · 2020 [cited by applicant]
US 20210174128A1 · Charnock et al. · 2021 [cited by applicant]
US 20210209425A1 · Nataraj et al. · 2021 [cited by applicant]
US 20210248624A1 · Keren · 2021 [cited by examiner]
US 20210256201A1 · Bradley et al. · 2021 [cited by applicant]
US 20220318315A1 · Wyle et al. · 2022 [cited by applicant]
US 20230040412A1 · Ramsl · 2023 [cited by applicant]
International Search Report and Written Opinion dated Dec. 22, 2022 in corresponding International Application No. PCT/US2022/076962. [cited by applicant]
Unnikrishnan, Ranjith and Martial Hebert. “Measures of Similarity,” 2005 Seventh IEEE Workshops on Applications of Computer Vision (WACV/Motion'05), Jan. 5-7, 2005, -vol. 1, pp. 394-394, XP031059117, ISBN: 978-0-7695-22… [cited by applicant]
Wu, Songhao: Web Scraping Basics, Jul. 15, 2020 (Jul. 15, 2020), XP093006359, Retrieved from the Internet: URL: https://towardsdatascience.com/web-scraping-basics-82f8b5acd45c [retrieved on Dec. 8, 2022], p. 10. [cited by applicant]