集搜客GooSeeker网络爬虫

标题: ALIBABA company_profile [打印本页]

作者: leixiaola    时间: 2016-8-14 21:09
标题: ALIBABA company_profile
遇到的问题描述
需要按类别抓取该页面信息
比如:Business Type:是什么,Total Employees是什么
但是被Total Annual Revenue难住了
因为其他的值都是固定一行,Total Annual Revenue非固定行数,有一行有二行还有三行
并且alibaba都是TR结构,不能做样列复制,因为会抓到其他的值
采用定位标志映射也无效。
希望得到效果:在一个抓取标签下获取完整内容。
求救
举例网址:
https://sdzesen.en.alibaba.com/company_profile.html
https://heatpresses.en.alibaba.com/company_profile.html

作者: leixiaola    时间: 2016-8-14 21:18
本帖最后由 leixiaola 于 2016-8-14 21:23 编辑

爬虫编写如下
[attach]1276[/attach]

抓取Total Annual Revenue 为一行值时(https://auning.en.alibaba.com/company_profile.html),抓取正常
[attach]1277[/attach]
抓取Total Annual Revenue 为多行值时(https://wal.en.alibaba.com/company_profile.html),抓取失败
[attach]1278[/attach]


作者: Fuller    时间: 2016-8-14 21:43
[attach]1279[/attach]


像上图,可以根据DOM节点的位置写xpath,比如,2016和2015都可以相对于Total Annual Revenue,那么2016那个就是
  1. //tr[contains(th/text(), 'Total Annual Revenue')]/td[1]/span[1]/text()
复制代码
那么2015就是
  1. //tr[contains(th/text(), 'Total Annual Revenue')]/td[1]/span[2]/text()
复制代码




作者: Fuller    时间: 2016-8-14 21:44
如果有很多行,可以做一个嵌套的整理箱,专门为total annual revenue做样例复制
作者: leixiaola    时间: 2016-8-14 23:29
本帖最后由 leixiaola 于 2016-8-14 23:34 编辑
Fuller 发表于 2016-8-14 21:44
如果有很多行,可以做一个嵌套的整理箱,专门为total annual revenue做样例复制 ...

还是没能理解
1.如果要做样列复制的话,下面的其他TR内容也会被抓到这个嵌套内容中了
比如这个主题:company_profile-LIST
[attach]1280[/attach]
2.DOM节点的位置写xpath
这个没明白耶
是要建立多个名称标签,然后取值么
可是有几行数据是不固定的呢
主题:company_profile
改了一下还是不太对

希望最终展现形式,类似
请赐教Top 3 Markets:,一个标签就可以获得多行值
[attach]1281[/attach]



作者: Fuller    时间: 2016-8-14 23:45
leixiaola 发表于 2016-8-14 23:29
还是没能理解
1.如果要做样列复制的话,下面的其他TR内容也会被抓到这个嵌套内容中了
比如这个主题:compa ...

刚才我看错了,我还以为每一年的数值是在同一个tr下的span,其实不是这样,是每一年的revenue都在一个tr下。

要自定义xpath也很麻烦。

要是我采集这个数据的话,我会把所有的tr都做成一个样例复制,采集里面的标题和值,形成一对key,value,等入库以后,再逐个把key找出来,展开成一张表
作者: leixiaola    时间: 2016-8-15 00:05
Fuller 发表于 2016-8-14 23:45
刚才我看错了,我还以为每一年的数值是在同一个tr下的span,其实不是这样,是每一年的revenue都在一个tr ...

我按照您说的这个思路想了一下,不知道是不是下面主题这样的
主题:【LIST】company_profile
但是对于多行的revenue来讲,第二行,第三行等等怎么加key呢?
[attach]1282[/attach]

作者: Fuller    时间: 2016-8-15 09:12
leixiaola 发表于 2016-8-15 00:05
我按照您说的这个思路想了一下,不知道是不是下面主题这样的
主题:【LIST】company_profile
但是对于多 ...

这样也可以,处理结果文件的时候,可以用 : 作为识别符号,前面的就是key,后面的就是value。

做规则的时候可以把key和value分开,创立两个抓取内容,我看到key放在一个th下,比较容易做映射
作者: Shelley1455    时间: 2019-9-2 09:28
我想抓取Alibaba里产品的overview里的quick detail的数据,请问怎么创建规则呢
作者: Fuller    时间: 2019-9-2 15:14
Shelley1455 发表于 2019-9-2 09:28
我想抓取Alibaba里产品的overview里的quick detail的数据,请问怎么创建规则呢

[attach]11271[/attach]

每个参数都放在一个dl中,dt存参数名,dd存参数值,所以,用样例复制很容易做规则。

但是,每个产品的参数不一样,定义规则的时候,不要具体到参数名。比如,上图,不要期望每个产品第一个参数的名字都是“Plate Type”。另一个产品的第一个参数可能是另一个值。所以,在整理箱中不要定义一个抓取内容就叫“Plate type”,那么样会对不上的。

抓取内容应该把参数名和参数值都当成抓取内容抓下来





欢迎光临 集搜客GooSeeker网络爬虫 (https://www.gooseeker.com/doc/) Powered by Discuz! X3.2