抓取分层数据

     2023-02-24     226

关键词:

【中文标题】抓取分层数据【英文标题】:Scraping hierarchical data 【发布时间】:2013-01-17 02:57:34 【问题描述】:

我正在尝试从global Dept stores 抓取大陆/国家/地区的 Dept 商店列表。我正在运行以下代码首先获取大陆,因为我们可以看到 XML 层次结构的方式使得每个大陆的国家不是该大陆的子节点。

> url<-"http://en.wikipedia.org/wiki/List_of_department_stores_by_country"
> doc = htmlTreeParse(url, useInternalNodes = T)
> nodeNames = getNodeSet(doc, "//h2/span[@class='mw-headline']")
> # For Africa
> xmlChildren(nodeNames[[1]])
$a
<a href="/wiki/Africa" title="Africa">Africa</a> 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"        
> xmlSize(nodeNames[[1]])
[1] 1

我知道我可以在单独的 getNodeSet 命令中处理国家/地区,但我只是想确保我没有遗漏任何东西。有没有更聪明的方法可以同时获取每个大陆和每个国家/地区的所有数据?

【问题讨论】:

鉴于文档的结构,使用 SAX 解析它可能比使用 DOM 树更容易。 【参考方案1】:

uisng xpath,多个路径可以用|组合分隔器。所以我用它来获得同一个列表中的国家和商店。然后我得到第二个国家名单。我使用后一个列表来拆分第一个列表

url<-"http://en.wikipedia.org/wiki/List_of_department_stores_by_country"
library(XML)
xmltext <- htmlTreeParse(url, useInternalNodes = T)

## Here I use the combined xpath 
cont.shops <- xpathApply(xmltext, '//*[@id="mw-content-text"]/ul/li|
                                   //*[@id="mw-content-text"]/h3',xmlValue)
cont.shops<- do.call(rbind,cont.shops)                  ## from list to  vector


head(cont.shops)                  ## first element is country followed by shops
     [,1]                   
[1,] "[edit] Â Tunisia"     
[2,] "Magasin Général"
[3,] "Mercure Market"       
[4,] "Promogro"             
[5,] "Geant"                
[6,] "Carrefour"            
## I get all the contries in one list 
contries <- xpathApply(xmltext, '//*[@id="mw-content-text"]/h3',xmlValue)
contries <- do.call(rbind,contries)                     ## from list to  vector

    head(contries)
     [,1]                   
[1,] "[edit] Â Tunisia"     
[2,] "[edit] Â Morocco"     
[3,] "[edit] Â Ghana"       
[4,] "[edit] Â Kenya"       
[5,] "[edit] Â Nigeria"     
[6,] "[edit] Â South Africa"

现在我进行一些处理,以使用国家/地区拆分 cont.shops。

dd <- which(cont.shops %in% contries)                   ## get the index of contries
freq <- c(diff(dd),length(cont.shops)-tail(dd,1)+1)     ## use diff to get Frequencies
contries.f <- rep(contries,freq)                        ## create the factor splitter


ll <- split(cont.shops,contries.f)

我可以检查结果:

> ll[[contries[1]]]
[1] "[edit]  Tunisia"      "Magasin Général" "Mercure Market"        "Promogro"              "Geant"                
[6] "Carrefour"             "Monoprix"             
> ll[[contries[2]]]
[1] "[edit] Â Morocco"                                                         
[2] "Alpha 55, one 6-story store in Casablanca"                                
[3] "Galeries Lafayette, to open in 2011[1] within Morocco Mall, in Casablanca"

【讨论】:

这很有帮助。谢谢

如何在 python 中对 URL 进行分层排序?

...【发布时间】:2022-01-2002:32:52【问题描述】:给定从网站抓取的初始URL列表:https://somesite.com/https://somesite.com/advertisehttps://somesite.com/articleshttps://somesite.com/artic 查看详情

数据仓库分层(代码片段)

数据仓库分层1、介绍数据仓库更多代表的是一种对数据的管理和使用的方式,它是一整套包括了etl、调度、建模在内的完整的理论体系。现在所谓的大数据更多的是一种数据量级的增大和工具的上的更新。两者并无冲突,相反... 查看详情

数据仓库之数仓分层及hive分层

目录一、数据仓库之数仓分层(一)为什么要分层?(二)数仓三层1、数据运营层:ODS(OperationalDataStore)2、数据仓库层:DW(DataWarehouse)3、数据应用层:APP(Applicati 查看详情

建模分层数据仓库维度

】建模分层数据仓库维度【英文标题】:modellinghierarchicaldatawarehousedimension【发布时间】:2014-05-2812:47:19【问题描述】:我正在尝试对分层的维度进行建模,并且在每个级别上具有不确定数量的特征。下面是一个关于如何在数据... 查看详情

如何使用redis存储分层数据?

】如何使用redis存储分层数据?【英文标题】:Howtouseredistostorehierarchicaldata?【发布时间】:2014-04-0416:55:25【问题描述】:我有一组分层数据要存储,分层就像站点/建筑物/楼层,例如数据site:\'NewYork\',buildings:[name:\'buildinga\',floors:[... 查看详情

数据记录分层

】数据记录分层【英文标题】:DatalogStratification【发布时间】:2012-09-0423:27:40【问题描述】:所以我试图了解Datalog的工作原理,它与Prolog之间的区别之一是它在否定和递归上具有分层限制。引用***:如果谓词P是从谓词Q肯定派生... 查看详情

数据仓库的分层架构设计

数据仓库采用分层架构,分为缓冲层、操作数据层、明细数据层、汇总数据层和数据集市层。如图为数据仓库分层架构示意图。1、缓冲层概念:用于存储每天的增量数据和变更数据。数据生成方式:直接从Kafka接收源数据或从业... 查看详情

Oracle分层查询数据

】Oracle分层查询数据【英文标题】:Oraclehierarchicalqueriesdata【发布时间】:2021-03-0504:03:56【问题描述】:link提供了一个很好的示例来概述如何使用Oracle分层查询。我试图使用链接中给出的示例表tab1生成以下数据组合,但持续了... 查看详情

分层拆分数据

】分层拆分数据【英文标题】:stratifiedsplittingthedata【发布时间】:2014-01-1315:22:12【问题描述】:我有一个大型数据集,喜欢为每个城市拟合不同的逻辑回归,这是我数据中的一列。以下70/30拆分在不考虑城市组的情况下有效。in... 查看详情

如何从按连续变量分层的 Pandas 数据框中获取分层随机样本

】如何从按连续变量分层的Pandas数据框中获取分层随机样本【英文标题】:HowdoyoutakeastratifiedrandomsamplefromaPandasdataframethatstratifiesbyacontinuousvariable【发布时间】:2018-01-1105:03:16【问题描述】:问题:我有一个包含1,000,000行的大型Pan... 查看详情

Apache Spark 中的分层数据操作

】ApacheSpark中的分层数据操作【英文标题】:HierarchicaldatamanipulationinApacheSpark【发布时间】:2017-12-2717:10:24【问题描述】:我在Spark(v2.1.1)中有一个包含分层数据的3列(如下所示)的数据集。我的目标是根据父子层次结构为每一行... 查看详情

数据平台分层

 https://mp.weixin.qq.com/s/ph7qxvoeDDNRvwUnuL5WRQ 独家解读:魅族数据平台的设计哲学和核心架构InfoQ 2018-01-29   查看详情

通过 JDBC 访问分层数据 [关闭]

】通过JDBC访问分层数据[关闭]【英文标题】:AccessinghierarchicaldataviaJDBC[closed]【发布时间】:2011-08-1316:26:53【问题描述】:我有一个包含列ID和父级的表菜单。我们可以使用普通的JDBC(无ORM)从数据库中加载分层数据吗?我们可... 查看详情

如何使用分层索引保存和检索 Pandas 数据帧?

】如何使用分层索引保存和检索Pandas数据帧?【英文标题】:HowtosaveandretrivePandasdataframeswithhierarchichalindexing?【发布时间】:2015-03-2506:29:28【问题描述】:我需要创建并保存一个带有分层索引的Pandas数据框。在下面,我创建了两... 查看详情

nodejs分层

一.nodeJS分层分为三层:- 表现层:接受用户数据,并封装- 服务层:与公司业务有关的东西,处理判断呀什么的- 持久层:与数据库有关的  表现层:page与表现层的数据传递,routes接受前台数据   注... 查看详情

数据仓库为什么要分层

如何分层结合Inmon和Kimball的集线器式和总线式的数据仓库的优点,分层为ODS-DW-DM-OLAP/OLAM/appODS层是将OLTP数据通过ETL同步到数据仓库来作为数据仓库最基础的数据来源。在这个过程中,数据经过了一定的清洗,比如字段的统一,脏... 查看详情

r语言对dataframe(data.table)数据分层随机抽样实战

R语言对dataframe(data.table)数据分层随机抽样实战目录R语言对dataframe(data.table)数据分层抽样实战#仿真数据#分层抽样 查看详情

在mysql中获取分层数据[重复]

】在mysql中获取分层数据[重复]【英文标题】:Fetchinghierarchicaldatainmysql[duplicate]【发布时间】:2021-12-2904:43:45【问题描述】:我有一个user表,USER_IDIMMEDIATE_SUPERIOR_ID432NULL554432115043214421150为了获取分层数据,我编写了这个查询SELECTc1... 查看详情