# Commodity Information Collection and System Construction of e-Commerce Platform Based on Network Data

Authors: Meng Qi
Journal: Wireless Communications and Mobile Computing
 (2022)

---

## Abstract

In order to quickly and accurately collect the massive commodities and corresponding transaction data of large-scale e-commerce platforms, and improve the ability of data analysis and mining, this paper proposes a platform commodity information collection system based on splash technology. The system prerenders the javascript code in the product page, combined with the Scrapy crawler framework, to realize a system that quickly and effectively collects product data from different platforms, and uses “mobile phone” as the retrieval keyword to verify the designed system, respectively. The experimental results show that the system can effectively collect up to 60,000 comments and 6,000 system requests.Conclusion. The platform commodity information collection system based on splash technology has certain application value and promotion for the commodity data collection of different platforms of e-commerce.


---

## Body

## 1. Introduction

With the rapid development of e-commerce, online shopping has become an important form of shopping. Large scale e-commerce platforms generate a large amount of commodity transaction data every day. A large number of researchers choose the commodity data of e-commerce platform as the experimental data set. The mining and analysis of these data have important research value for optimizing the platform construction, increasing product sales, and improving consumer shopping experience. For performance and security reasons, e-commerce platforms often display data through asynchronous loading. When some product pages are viewed in the browser, all product data can be displayed, but the crawler can download the page to the local, but the data you want to collect cannot be obtained or only part of the data can be obtained [1–3]. For example, the display of product prices is dynamically loaded. By viewing the page source code, you will find that there is no content in the HTML tag displaying prices. For these large-scale e-commerce platform data, the common practice is to capture and analyze the HTTP requests in the page to find the data source. This approach is usually very worthwhile. In the end, structured and complete data and faster crawl speed can be obtained. However, the pages of large-scale e-commerce platforms are rich in content and complex in structure. A commodity page can generate hundreds of requests. Moreover, the parameters required by the interface are often difficult to obtain and difficult to analyze. If the parameters are deleted, the accuracy of the obtained data is difficult to be guaranteed, and it is easy to be found by the anticlimbing mechanism of the platform, resulting in shielding. With the business development and technology iteration of the platform, the interface parameters will also change. When it is necessary to obtain commodity data from different platforms, it is necessary to re capture and analyze, which is time-consuming and technically difficult [4, 5]. Figure 1 shows the commodity information collection and system construction of e-commerce platform.Figure 1
Commodity information collection and system construction of e-commerce platform.This paper analyzes the commonness of page structure, basic interaction process, and commodity loading mode in e-commerce platforms, and puts forward a general data capture strategy for different e-commerce platforms. Through the method of simulating browser operation, combined with the Scrapy crawler framework, we can quickly collect commodity information on different platforms.


## 2. Literature Review

With regard to the research on e-commerce commodity information collection system, Wen, Y. and others proposed to use crawler technology to collect the information about the confirmed cases of novel coronavirus pneumonia and their activity tracks published on the “headlines today” website, analyze the clinical and epidemiological characteristics, and provide reference basis for the prevention and control of COVID-19 pneumonia [6]. Su, X. and others proposed the auxiliary technology of reptile and dietary assessment to analyze the dietary structure of patients with COVID-19 in Wuhan shelters hospital, so as to provide reference for the scientific nutrition supply of medical staff and patients [7]. Cai, W. and others proposed a theme-based web crawler technology to collect the basic data required for regional coal mine gas disaster risk early warning in the Internet environment, which provides a useful reference for the development and construction of regional coal mine major disaster risk early warning system. Python crawler technology realizes the automatic download and real-time update of the earthquake directory of high-precision positioning results and provides help for earthquake prevention and disaster reduction [8]. Zhang, X. and others proposed to collect topics related to the “COVID-19” in the microblog and analyze the overall attitude and emotional fluctuation of Internet users in different stages of the epidemic development. Taking the “8.12” dangerous chemical explosion accident in Tianjin as an example, the crawler technology is used to collect relevant topic data in the social platform, analyze the evolution trend of public opinion in emergencies, analyze the laws and potential risks, and provide decision support for public opinion guidance [9]. Wu, C. H. and others proposed to study the parking optimization strategy of shared bicycles based on the web crawler data of mobike bicycles. By obtaining the real-time road condition data and other traffic information data in the Gaode map, the impact of the decline in the traffic capacity of the road section in the road network on the damage to the service capacity of the road network is analyzed, providing a reference for the traffic management department to strengthen the governance of key sections and formulate congestion mitigation policies [10]. Yla, B. and others proposed taking “rainstorm disaster” as the theme, tried to introduce the multiobjective optimization algorithm into the theme crawler, and then proposed a web page spatial evolution algorithm based on multiobjective optimization. They designed a topic crawler search strategy combined with gray wolf algorithm, which provides a reference for solving the problem that topic crawlers are difficult to achieve the optimal solution in global search [11]. Guan, Z. and others proposed a focused crawler based on semantic similarity vector space, which improved the crawling accuracy to a certain extent by introducing the text semantic option into the similarity calculation index. By training supervised learning classifiers, the accuracy of similarity calculation between text content and links to be crawled is improved, and good results are achieved [12].On the basis of the current research, this paper proposes a platform commodity information collection system based on splash technology. A commodity information collection system is designed and implemented through splash to simulate the browser operation, combined with the Scrapy crawler framework, which can quickly collect the commodity information of different platforms.


## 3. Research Methods

### 3.1. Basic Principles of Web Crawler

The main function of the web crawler is to download the target page locally according to the user-defined capture strategy and then collect the required information through the predefined parsing rules for persistent storage. The collection process of the crawler system may vary according to the specific application scenarios and functional requirements, but in general, it can be summarized as the following steps. Figure2 shows the corresponding collection process [13].
(1)
The collector starts to pass the initial URL link to the scheduling module(2)
The URL scheduling module must first process the received links, filter out the duplicate pages that have been captured, sort the remaining links according to their priority, and pass the page address with higher priority in the result (the top in the sorting result) to the downloader module(3)
The downloader module interacts with Internet resources to download the target page to the local [14](4)
The page parsing module parses the required information according to the predefined collection rules. The new link parsed from the page is passed to the URL scheduling module, and the collected structured data is stored in the database(5)
Repeat the above steps ②–④ until the number of links in the URL scheduling module is 0, or when the stop condition is met, the operation of the program is terminatedFigure 2
Basic acquisition flow chart.


### 3.2. Realization of Technology

Generally speaking, the implementation technology of crawler program mainly includes page download, content analysis, and anticrawler detection. Among them, page download refers to the successful download of the target page and the content contained in the page to the local. Page downloading is often divided into static page downloading and dynamic page downloading according to the loading method of page content [15]. Static pages generally refer to pages in pure HTML format, and the content is fixed. The page captured by the crawler is the same as the page rendered by the browser. The dynamic page refers to the part of the content in the page, which is dynamically written by executing JavaScript code. When the page is downloaded to the local by crawling, the corresponding dynamic content is not written to the target file due to the lack of the vascript code running environment, resulting in the lack of content in the page captured by the crawler [16]. For the collection of dynamic content in the page, it is often necessary to integrate other technologies in the implementation of the crawler, such as PhantomJS, Selenium, and Splash [17].The analysis of page content mainly refers to the process that the crawler extracts the text information embedded in HTML tags by writing customized collection rules after successfully downloading the page to the local. Common methods include regular expressions, CSS selectors, XPath expressions, and some mature parsing libraries [18], for example, BeautifulSoup, lxml, and html5lib. The compilation of collection rules is usually a process of practice making perfect. Based on the accumulated technology, this paper focuses on the use of CSS selectors to compile parsing rules, with a small amount of regular expressions.Anticrawler detection means that in the process of information collection by a crawler, it is necessary to use certain technical means to disguise itself as a real user when visiting the page to avoid being detected by the target server and then prohibit access [19]. Common methods include dynamic replacement of IP information and user agent fields, as well as limiting the crawler’s access speed per unit time and increasing the random interval between two visits. There are many mature crawler frameworks in the Internet that can be used directly. When collecting data, users only need to focus on the compilation of collection rules without building a crawler from scratch. Some common crawler frameworks are listed in Table 1.Table 1
Common crawler frames.
Frame nameOfficial website addressDevelopment languageScrapyhttps://scrapy.org/PythonRequestshttps://requests.readthedocs.io/PythonNutchhttp://nutch.apache.org/JavaHeritrixhttps://github.com/internetarchive/heritrix3JavaHeadless chrome crawlerhttps://github.com/yujiosaka/headless-chrome-crawlerNode.jsAmong them, the requests library is easy to use and is especially suitable for beginners. However, it is not designed asynchronously and is easy to cause blocking. Nutch is an open source crawler program produced by a large company. It has rich functions and also includes an out of the box search engine. Heritrix has existed for a long time. It has been updated many times and used by many people. HeadlessChromeCrawler is a distributed crawler based on HeadlessChrome, which can collect dynamic content in pages. The Scrapy framework is designed based on asynchronous mode, with good documentation support and strong scalability. In this paper, we choose to customize the development based on the Scrapy framework [20].


### 3.3. Experimental Design

Large-scale e-commerce platforms have tens of thousands of commodities and a wide variety of commodities. In order to facilitate consumers to quickly locate products of interest, they usually provide the function of “commodity search.” Some common large-scale e-commerce platforms provide the function of commodity retrieval. When describing commodities on the commodity details page, these platforms include the following parts: basic commodity information, specification parameters, user comments, and a group of pictures for commodity display. Therefore, this experiment mainly collects data for the four parts contained in the product details page. When retrieving goods on the e-commerce platform, you first need to enter the name of the goods in the “commodity search box”, click the “search button” to return to the first page of the search results, and select the page address at this time as the URL(start_url) of the program. At the same time, under the commodity search page of the e-commerce platform, there is usually a row of paging buttons for displaying page information [21].


### 3.4. System Algorithm Design

The basic steps of the experimental design are as follows (Figure3 shows the corresponding program flow chart):
(1)
First, visit the start_url page(2)
Simulate the browser operation and access page_num in the product search results:(a)
Fill in page_num in the text input box shown in Figure3(b)
Click OK to access the page_num page in the search results(c)
Selectively increase the page scrolling operation according to the actual situation (applicable to those e-commerce platforms that load the remaining goods on the current search page by page scrolling)(3)
Download the contents of page_num in the search results to the local, and resolve the address of the product details page in the page(4)
Traverse the product details page and collect the basic information, pictures, and comment data of the product in turn(5)
Store the collected commodity information into the database(6)
Page_num + =1, repeat steps (1) to (5) to grab the product information in the remaining search pages(7)
The program is finishedFigure 3
Procedure flow chart.Note: in this way, the tedious work of capturing and analyzing the HTTP requests of the platform is avoided. When it is necessary to collect commodity data from other platforms, or when the interface parameters change, it is only necessary to change the start_url to quickly start the collection.


### 3.5. Specific Implementation Technology

When setting up the experimental environment, there are several preparations to be done: ① since splash runs in the docker container, docker needs to be installed first. After the installation is successful, it is very slow to pull the splash image from the DockerHub, which is easy to fail. The configured image source can be solved later. ② When adopting the Scrapy+Splash structure, you also need to install the python package Scrapy-Splash to achieve a seamless combination between the two. When installing Scrapy-Splash, pay attention to the content in the “configuration” section. ③ When installing the crawler framework through the “pipinstallscrapy” command, it is easy to encounter that an exception is thrown due to timeout and the crawler framework cannot be downloaded successfully. You can select some stable and fast images to download. You can also use this method to speed up the installation of other Python packages.As for the framework structure of Scrapy, the processing and flow of data between internal components, Figure4 shows the complete system framework. From the figure, it can be seen that the collection of commodity information can be divided into two categories: one is to dynamically render the content in the page through splash (the essence of simulating browser operation is to dynamically execute custom js script), for example, commodity search page and commodity details page. During collection, the default ScrapyRequest object needs to be converted into a SplashRequest object acceptable to splash through the package Scrapy-Splash, and then, splash accesses the corresponding page to return the rendered content. The other one does not need to be pre rendered by splash, and can directly obtain data through access, for example, display pictures and reviews of commodities [22].Figure 4
Scrapy system framework.After splash returns the contents of the product details page, the address of the product image can be obtained through parsing. The included ImagesPipeline module in scratch can automatically download the image to the local file system. However, in order to facilitate persistent storage, we directly record the downloaded image content (in binary format) in the corresponding product item and then store the item in the database when the product comments are downloaded. When we browse comments on the product details page, the jump of the comment page generates fewer HTTP requests, and the data source is easy to determine. In the experiment, we directly grab the comment information of the product through the comment interface. It should be noted that during the operation of the program, the search results page, product details page, product pictures, and product comments are downloaded at the same time. Scrapy will automatically maintain the request and response queue. We can also set the priority for the request object to specify the execution order of the request.


## 3.1. Basic Principles of Web Crawler

The main function of the web crawler is to download the target page locally according to the user-defined capture strategy and then collect the required information through the predefined parsing rules for persistent storage. The collection process of the crawler system may vary according to the specific application scenarios and functional requirements, but in general, it can be summarized as the following steps. Figure2 shows the corresponding collection process [13].
(1)
The collector starts to pass the initial URL link to the scheduling module(2)
The URL scheduling module must first process the received links, filter out the duplicate pages that have been captured, sort the remaining links according to their priority, and pass the page address with higher priority in the result (the top in the sorting result) to the downloader module(3)
The downloader module interacts with Internet resources to download the target page to the local [14](4)
The page parsing module parses the required information according to the predefined collection rules. The new link parsed from the page is passed to the URL scheduling module, and the collected structured data is stored in the database(5)
Repeat the above steps ②–④ until the number of links in the URL scheduling module is 0, or when the stop condition is met, the operation of the program is terminatedFigure 2
Basic acquisition flow chart.


## 3.2. Realization of Technology

Generally speaking, the implementation technology of crawler program mainly includes page download, content analysis, and anticrawler detection. Among them, page download refers to the successful download of the target page and the content contained in the page to the local. Page downloading is often divided into static page downloading and dynamic page downloading according to the loading method of page content [15]. Static pages generally refer to pages in pure HTML format, and the content is fixed. The page captured by the crawler is the same as the page rendered by the browser. The dynamic page refers to the part of the content in the page, which is dynamically written by executing JavaScript code. When the page is downloaded to the local by crawling, the corresponding dynamic content is not written to the target file due to the lack of the vascript code running environment, resulting in the lack of content in the page captured by the crawler [16]. For the collection of dynamic content in the page, it is often necessary to integrate other technologies in the implementation of the crawler, such as PhantomJS, Selenium, and Splash [17].The analysis of page content mainly refers to the process that the crawler extracts the text information embedded in HTML tags by writing customized collection rules after successfully downloading the page to the local. Common methods include regular expressions, CSS selectors, XPath expressions, and some mature parsing libraries [18], for example, BeautifulSoup, lxml, and html5lib. The compilation of collection rules is usually a process of practice making perfect. Based on the accumulated technology, this paper focuses on the use of CSS selectors to compile parsing rules, with a small amount of regular expressions.Anticrawler detection means that in the process of information collection by a crawler, it is necessary to use certain technical means to disguise itself as a real user when visiting the page to avoid being detected by the target server and then prohibit access [19]. Common methods include dynamic replacement of IP information and user agent fields, as well as limiting the crawler’s access speed per unit time and increasing the random interval between two visits. There are many mature crawler frameworks in the Internet that can be used directly. When collecting data, users only need to focus on the compilation of collection rules without building a crawler from scratch. Some common crawler frameworks are listed in Table 1.Table 1
Common crawler frames.
Frame nameOfficial website addressDevelopment languageScrapyhttps://scrapy.org/PythonRequestshttps://requests.readthedocs.io/PythonNutchhttp://nutch.apache.org/JavaHeritrixhttps://github.com/internetarchive/heritrix3JavaHeadless chrome crawlerhttps://github.com/yujiosaka/headless-chrome-crawlerNode.jsAmong them, the requests library is easy to use and is especially suitable for beginners. However, it is not designed asynchronously and is easy to cause blocking. Nutch is an open source crawler program produced by a large company. It has rich functions and also includes an out of the box search engine. Heritrix has existed for a long time. It has been updated many times and used by many people. HeadlessChromeCrawler is a distributed crawler based on HeadlessChrome, which can collect dynamic content in pages. The Scrapy framework is designed based on asynchronous mode, with good documentation support and strong scalability. In this paper, we choose to customize the development based on the Scrapy framework [20].


## 3.3. Experimental Design

Large-scale e-commerce platforms have tens of thousands of commodities and a wide variety of commodities. In order to facilitate consumers to quickly locate products of interest, they usually provide the function of “commodity search.” Some common large-scale e-commerce platforms provide the function of commodity retrieval. When describing commodities on the commodity details page, these platforms include the following parts: basic commodity information, specification parameters, user comments, and a group of pictures for commodity display. Therefore, this experiment mainly collects data for the four parts contained in the product details page. When retrieving goods on the e-commerce platform, you first need to enter the name of the goods in the “commodity search box”, click the “search button” to return to the first page of the search results, and select the page address at this time as the URL(start_url) of the program. At the same time, under the commodity search page of the e-commerce platform, there is usually a row of paging buttons for displaying page information [21].


## 3.4. System Algorithm Design

The basic steps of the experimental design are as follows (Figure3 shows the corresponding program flow chart):
(1)
First, visit the start_url page(2)
Simulate the browser operation and access page_num in the product search results:(a)
Fill in page_num in the text input box shown in Figure3(b)
Click OK to access the page_num page in the search results(c)
Selectively increase the page scrolling operation according to the actual situation (applicable to those e-commerce platforms that load the remaining goods on the current search page by page scrolling)(3)
Download the contents of page_num in the search results to the local, and resolve the address of the product details page in the page(4)
Traverse the product details page and collect the basic information, pictures, and comment data of the product in turn(5)
Store the collected commodity information into the database(6)
Page_num + =1, repeat steps (1) to (5) to grab the product information in the remaining search pages(7)
The program is finishedFigure 3
Procedure flow chart.Note: in this way, the tedious work of capturing and analyzing the HTTP requests of the platform is avoided. When it is necessary to collect commodity data from other platforms, or when the interface parameters change, it is only necessary to change the start_url to quickly start the collection.


## 3.5. Specific Implementation Technology

When setting up the experimental environment, there are several preparations to be done: ① since splash runs in the docker container, docker needs to be installed first. After the installation is successful, it is very slow to pull the splash image from the DockerHub, which is easy to fail. The configured image source can be solved later. ② When adopting the Scrapy+Splash structure, you also need to install the python package Scrapy-Splash to achieve a seamless combination between the two. When installing Scrapy-Splash, pay attention to the content in the “configuration” section. ③ When installing the crawler framework through the “pipinstallscrapy” command, it is easy to encounter that an exception is thrown due to timeout and the crawler framework cannot be downloaded successfully. You can select some stable and fast images to download. You can also use this method to speed up the installation of other Python packages.As for the framework structure of Scrapy, the processing and flow of data between internal components, Figure4 shows the complete system framework. From the figure, it can be seen that the collection of commodity information can be divided into two categories: one is to dynamically render the content in the page through splash (the essence of simulating browser operation is to dynamically execute custom js script), for example, commodity search page and commodity details page. During collection, the default ScrapyRequest object needs to be converted into a SplashRequest object acceptable to splash through the package Scrapy-Splash, and then, splash accesses the corresponding page to return the rendered content. The other one does not need to be pre rendered by splash, and can directly obtain data through access, for example, display pictures and reviews of commodities [22].Figure 4
Scrapy system framework.After splash returns the contents of the product details page, the address of the product image can be obtained through parsing. The included ImagesPipeline module in scratch can automatically download the image to the local file system. However, in order to facilitate persistent storage, we directly record the downloaded image content (in binary format) in the corresponding product item and then store the item in the database when the product comments are downloaded. When we browse comments on the product details page, the jump of the comment page generates fewer HTTP requests, and the data source is easy to determine. In the experiment, we directly grab the comment information of the product through the comment interface. It should be noted that during the operation of the program, the search results page, product details page, product pictures, and product comments are downloaded at the same time. Scrapy will automatically maintain the request and response queue. We can also set the priority for the request object to specify the execution order of the request.


## 4. Result Analysis

This experiment uses “mobile phone” as the retrieval keyword to verify the designed system, respectively. Collect the first 10 pages of mobile phone product data, and collect product introduction, specification packaging, pictures, and all comment data on the product detail page. For Dangdang.com, the first 5 pages of mobile phone product data are collected. In the product details page, only basic information such as product introduction, specifications, and pictures are collected. When collecting product data, we set the number of iterations of the outer loop to 1. When the program runs, only the product information in one retrieval page is collected. By setting the value of page_num to 1, 2, 3, …, 10 in turn, the product information of the first 10 pages is collected in stages. When collecting the Internet, the number of iterations of the outer loop is set to 5, and the initial value of page_num is set to 1. When the program runs, the basic information of the first 5 pages of goods is directly collected. Figure5 shows the time-consuming curve of data on each page, the total number of reviews of products on the retrieval page, and the curve of the number of requests generated by the collection during page-by-page collection. The x-axis in the figure represents the retrieval page number at the time of collection, and the two y-axes represent the total number of product reviews (or the number of requests generated) and the total time spent. Finally, the figure shows the total time spent on Dangdang.com collecting 5 pages of basic commodity information at one time.Figure 5
Time consuming curve of commodity information collection.Carefully observe the time-consuming curve in the figure and compare the total time-consuming when Dangdang does not collect product reviews. It can be found that the time-consuming of data collection is mainly affected by the number of product reviews. There are two abnormal points on the time-consuming curve in the figure. The time-consuming of pages 5 and 10 is higher than that of the previous point, but the number of comments is lower than that of the previous point. By analyzing the log, it is found that when collecting these two pages of data, more retry_requests are generated in the program; that is, when a request fails to download due to various reasons, the collection request is reinitiated. This analysis can also be confirmed by comparing the value of these two points with the previous point in the contrasting demand curve.Figure5 objectively reflects the operation efficiency of the data collection method proposed in this paper. In practice, users can collect several pages of comments on commodities as needed to improve the collection efficiency. At the same time, due to the limitations of experimental conditions, the crawler system, database services, and virtual machines supporting splash and docker services are all running on the same laptop, which also affects the efficiency of data collection to a certain extent, which is also a future improvement direction. The success of data collection directly shows the feasibility of the commodity information collection method of large-scale e-commerce platform proposed in this paper. This method can realize the rapid collection of commodity data of different platforms and save the development time for the majority of researchers.


## 5. Conclusion

This paper proposes a platform commodity information collection system based on splash technology, combined with prerendering the javascript code in the commodity page, and combined with the Scrapy crawler framework, to realize a fast and effective collection of commodity data from different platforms. The designed system is verified, respectively. The experimental results show that the system can effectively collect up to 60,000 comments and 6,000 system requests. For the collection of commodity data on different platforms of e-commerce, it has certain application value and promotion.



---

*Source: 1359374-2022-08-02.xml*