xpath过滤标签内的其他标签获得全部内容

最近在爬一个网站https://www.malwaredomainlist.com/mdl.php主要是把表格中的数据爬下来

在浏览器中审查元素可知,所需要的数据在一个table标签中,如下图所示:
审查元素

可通过xpath提取出table中的tr标签,如下:

selector = Selector(response)
products = selector.xpath('//table[@class="table"]//tr')

然后对products 遍历获得每个tr标签内容:

for product in products[4:]:
    #对product的操作,product里面包含所需要的表格中的一行
    #从4开始遍历products,是因为有两个表头,可以在上一步中使用not剔除表头

之后看到第一列的内容在一个<nobr> 标签中,如下图
这里写图片描述
可以通过下面代码提取内容:

#td[1]表示该行的第一列
product.xpath('./td[1]/nobr//text()').extract_first()

但是

当我获得其他列内容的时候,发现里面有若干个<wbr> 标签,如果按照上面的代码只会获得第一个标签之前的内容,之后的内容则不会获得。如下图:
这里写图片描述

上述代码只获得了如下内容:

photoscape.ch/Setup.
sarahdaniella.com/sw

解决

解决代码:

data = ''
for result in product.xpath('./td[2]'):#td[2]表示该行的第二列
    data = data.join(result.xpath('string(.)').extract_first())

下图是两种代码的运行的效果:

这里写图片描述

可以看到该解决方案成功的获取到了<td>标签下的全部内容。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值