# US 10,769,234 B2 · Document object model transaction crawler

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,769,234 B2
- Document ID: US10769234B2
- Status: Granted
- Kind: B2
- Application number: 15/680,418
- Filed: 2017-08-18
- Published: 2018-03-01
- Granted: 2020-09-08
- Earliest claimed: 2016-08-31
- Assignees: Micro Focus LLC
- Applicants: EntIT Software LLC
- Inventors: Thomas Christopher Swedlund; Kevin Allen Williams; Brian Charles King
- Web page: https://patentgrep.com/patent/US10769234B2

## CPC

- G06F 16/986: {Document structures and storage, e.g. HTML extensions}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/951: Indexing; Web crawling techniques
- G06F 16/955: using information identifiers, e.g. uniform resource locators [URL]
- G06F 16/9577: {Optimising the visualization of content, e.g. distillation of HTML documents}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Examples herein involve a document object model (DOM) transaction crawler. Examples herein involve identifying an event in a first state of a document object model. The event is executed to cause a state change from the first state of the document object model to a second state of the document object model. Furthermore, the state change is stored in a transaction log to store the difference between the first state of the document object model and the second state of the document object model.

## Claims

### Claim 1

A method performed by a system comprising a hardware processor, comprising:
identifying a first event in a first state of a document object model (DOM) of an application;
executing the first event to cause a first state change from the first state of the DOM to a second state of the DOM;
recording the first state change in a transaction log, the first state change comprising a difference between the first state of the DOM and the second state of the DOM, wherein the transaction log further contains a plurality of state changes of the DOM, the plurality of state changes comprising a second state change recorded in the transaction log responsive to a second event that caused the second state change of the DOM; and
reverting the DOM from the second state of the DOM to the first state of the DOM; and
after reverting the DOM from the second state to the first state,
retrieving the plurality of state changes from the transaction log,
implementing the plurality of state changes retrieved from the transaction log to traverse the DOM from the first state to a third state of the DOM without re-executing the first event and the second event, and
execute a third event to cause a further state change of the DOM from the third state to another state of the DOM.

### Claim 2 (depends on 1)

The method of claim 1, further comprising creating the DOM from a hypertext markup language of a universal resource locator.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
determining that a fourth event is a sibling event of the first event in the first state of the DOM; and
executing the sibling event to cause a state change from the first state of the DOM to a different state of the DOM.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
recording the further state change in the transaction log.

### Claim 5 (depends on 1)

The method of claim 1, wherein the second state change of the DOM is from the first state to a fourth state of the DOM.

### Claim 6 (depends on 5)

The method of claim 5, wherein the plurality of state changes further comprise a third state change of the DOM from the fourth state to the third state of the DOM, and wherein the implementing of the plurality of state changes comprises implementing the third state change in the DOM without executing a fourth event that caused a recording of the third state change in the transaction log.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining that no sibling events of the first event remain in the first state of the DOM, wherein the retrieving, the implementing, and the executing of the third event are in response to the determining that no sibling events of the first event remain in the first state of the DOM.

### Claim 8

A non-transitory machine readable medium comprising instructions that, when executed, cause a machine to:
identify a first state change in a document object model (DOM) of an application in response to executing a first event of a first state of the DOM, the first state change comprising a difference between the first state of the DOM and a second state of the DOM;
store the first state change in a transaction log, wherein the transaction log further contains a plurality of state changes of the DOM, the plurality of state changes comprising a second state change recorded in the transaction log responsive to a second event that caused the second state change of the DOM;
after the first state change from the first state of the DOM to the second state of the DOM, revert the DOM from the second state of the DOM to the first state of the DOM; and
after reverting the DOM from the second state to the first state,
retrieve the plurality of state changes from the transaction log,
implement the plurality of state changes retrieved from the transaction log to traverse the DOM from the first state to a third state of the DOM without re-executing the first event and the second event, and
execute a third event to cause a further state change of the DOM from the third state to another state of the DOM.

### Claim 9 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the instructions, when executed, cause the machine to:
determine if any remaining sibling event of the first event exists in the first state of the DOM;
if no remaining sibling event of the first event exists in the first state of the DOM, perform the retrieving, the implementing, and the executing of the third event.

### Claim 10 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions, when executed, cause the machine to:
if a remaining sibling event of the first event exists in the first state of the DOM, execute the remaining sibling event.

### Claim 11 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the instructions, when executed, cause the machine to:
generate the DOM from a hypertext markup language of the application.

### Claim 12 (depends on 8)

The non-transitory machine readable medium of claim 8, wherein the second state change is from the first state to a fourth state of the DOM.

### Claim 13 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions, when executed, cause the machine to determine if any remaining sibling event of the first event exists based on a breadth-first crawl of the DOM.

### Claim 14 (depends on 12)

The non-transitory machine readable medium of claim 12, wherein the plurality of state changes further comprise a third state change of the DOM from the fourth state to the third state of the DOM, and wherein implementing the plurality of state changes comprises implementing the third state change in the DOM without executing a fourth event that caused a recording of the third state change in the transaction log.

### Claim 15

An apparatus comprising:
a processor; and
a non-transitory storage medium storing instructions executable on the processor to:
identify a first event in a first state of a document object model (DOM) of an application;
execute the first event to cause a first state change from the first state of the DOM to a second state of the DOM;
record the first state change in a transaction log, wherein the transaction log further contains a plurality of state changes of the DOM, the plurality of state changes comprising a second state change recorded in the transaction log responsive to a second event that caused the second state change of the DOM:
revert the DOM from the second state of the DOM to the first state of the DOM; and
after reverting the DOM from the second state to the first state,
retrieve the plurality of state changes from the transaction log,
implement the plurality of state changes retrieved from the transaction log to traverse the DOM from the first state to a third state of the DOM without re-executing the first event and the second event, and
execute a third event to cause a further state change of the DOM from the third state to another state of the DOM.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein the instructions are executable on the processor to use a breadth-first crawl to identify events of the DOM to execute.

### Claim 17 (depends on 15)

The apparatus of claim 15, wherein the instructions are executable on the processor to use a depth-first crawl to identify events of the DOM to execute.

### Claim 18 (depends on 15)

The apparatus of claim 15, wherein the instructions are executable on the processor to create the DOM from a hypertext markup language of the application.

### Claim 19 (depends on 15)

The apparatus of claim 15, wherein the second state change is from the first state to a fourth state of the DOM.

### Claim 20 (depends on 19)

The apparatus of claim 19, wherein the plurality of state changes further comprise a third state change of the DOM from the fourth state to the third state of the DOM, and wherein implementing the plurality of state changes comprises implementing the third state change in the DOM without executing a fourth event that caused a recording of the third state change in the transaction log.
