【Python爬虫】借助某猪的案例写关于辅助xpath解析的小装饰器

到达目标页面

通过百度搜索某猪的民宿,我们到达了目标的列表页,并记录下目标的URL
在这里插入图片描述

配置相关Selenium获得页面page_source

例如配置长这样
在这里插入图片描述

通过Xpath解析文本

例如解析这些数据
在这里插入图片描述
或许已经注意到了,类装饰器有itemStrip这玩意吗???答案是这玩意是我编出来的。那么它的作用是什么?

辅助Xpath的小装饰器

装饰器的代码如下:

def itemStrip(function):
    def a(items):
        for item in items:
            for i in range(len(item)):
                try:
                    item[i] = item[i][0]
                except IndexError:
                    item[i] = ''
            yield item

    def b(*args, **kwargs):
        items = function(*args, **kwargs)
        striped = a(items)
        return striped
    return b

他的作用只是完善一下xpath寻值的操作。
在使用lxml.etree的xpath找值的时候,它返回的是一个列表。如果在《通过Xpath解析文本》这个图中,没有添加这个生成器,它返回的是一个这种格式的数据。

[[...], [...], [...], [...], [...], [...], [...], [...]]

如果不用装饰器来解决,就需要写8个这样的语句来完成

xx = ''.join(xx) if xx else '' 

而套上装饰器,仅需要在使用xpath解析数据前,加上@itemStrip 就可以直接yield数据了,省去了写多个语句的功夫。装饰器对应一些重复性的工作有奇效。

最终效果

在这里插入图片描述
python装饰器是一个能提升效率的一个魔法方法之一。这就是关于辅助xpath解析的小装饰器的一个小案例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值