入门级XPath简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013762572/article/details/81780824

简介

项目中因为需要数据,所以我们就学习了python,来写爬虫爬一些某东,某猫,某宁的数据,第一个爬虫框架是scrapy,要用到XPath,赶紧学习了一波,有些东西来记录一下,数据来源于项目,真实有效。

流程

因为我也是初学者,在网上爬了一些二次元的数据,就像这样:

对应的源码就是这样的:

<li class="js-smallCards _box" data-since="25781.481">
    <a href="/item/detail/6589006507025629453" class="db posr ovf" target="_blank" title=" 夜光-Night">
    <img class="cardImage"
             src="https://img5.bcyimg.com/user/792056/item/c0jm5/7e198b2677f740348b60b276990cb0f1.jpg/2X3"> </a>
    <footer class="l-clearfix">
        <a href="/u/792056" target="_blank" class="_avatar _avatar--user _avatar--xxxsm mr5 vam">
        <img src="https://user.bcyimg.com/Public/Upload/avatar/792056/512d027c1b494f9a9351668fb0b4ddd7/fat.jpg/amiddle"></a>
        <a href="/u/792056" target="_blank" class="name">
            <span class="fz12 lh18 username cut dib vam">夜光-Night</span>
        </a>
        <div class="l-right">
            <i class="i-liked-gray"></i>
            <span class="like">385</span>
        </div>
    </footer>
</li>

<li class="js-smallCards _box" data-since="25781.476">
    <a href="/item/detail/6590220468408549645" class="db posr ovf" target="_blank" title=" 衍上落白">
    <img class="cardImage" src="https://img9.bcyimg.com/user/3135480/item/c0jm8/85e3bda51d0c4856bada0adc29b6e993.jpg/2X3"> </a>
    <footer class="l-clearfix">
        <a href="/u/3135480" target="_blank" class="_avatar _avatar--user _avatar--xxxsm mr5 vam">
            <img src="https://user.bcyimg.com/Public/Upload/avatar/3135480/f6342ccf044e465a8c4d84c807fef29b/fat.jpg/amiddle">
        </a>
        <a href="/u/3135480" target="_blank" class="name">
            <span class="fz12 lh18 username cut dib vam">衍上落白</span>
        </a>
        <div class="l-right">
            <i class="i-liked-gray"></i>
            <span class="like">127</span>
        </div>
    </footer>
</li>

简单点就是这样的:

<li class="js-smallCards _box" data-since="29834.23">
    <a class="detail_url" href="" title="">
        <img class="cardImage" src=""/>
    </a>

    <footer class="l-clearfix">    
        <a class="_avatar" href=""> 
            <img src="" />
        </a>

        <a class="name">
            <span>衍上落白</span>
        </a>

        <div class="l-right">
            <span class="like">127</span>
        </div>
    </footer>
</li>

获取相关数据

1. 获取列表中所有的li数据:

// 从根目录下获取所有的li 【什么都没带,只要是li,都获取】
response.xpath("//li")

// 从根目下下获取class为js-smallCards _box的li类【使用class获取】
response.xpath('//li[@class="js-smallCards _box"]')

//从根目下下获取id为li的li类【使用class获取】
response.xpath('//li[@id="id"]')

获取结果如下:

可以看到,获取的结果为数组的形式,说明结果不止一个

2.获取列表中第某个li的数据

//获取第一个li数据
response.xpath("//li[1]")

//获取最后一个li数据
response.xpath("//li[last()]")

//获取拥有某个属性data-since=1的li数据
response.xpath("//li[@data-since='25781.481']")

//获取最后一个li数据或者data-since=1的数据
response.xpath("//li[last()] | //li[@data-since='25781.481']")

//获取第一个li的data-since属性数据
response.xpath("//li[1]/@data-since").extract()
or
response.xpath("//li/@data-since").extract()[1]

3.获取li的子元素

// 获取第一个li下所有的a标签
response.xpath("//li[1]/a")

//获取第一个li下第一个a标签的href属性
response.xpath("//li[1]/a[1]/@href")

//获取第一个li下第一个a标签下img标签
response.xpath("//li[1]/a[1]/img")

//获取第一个li下第一个a标签下img标签src属性
response.xpath("//li[1]/a[1]/img/@src")

//获取第一个li下span的标签
response.xpath("//li[1]/footer[1]/div[1]/span")

//获取span的文本
response.xpath("//span[1]/text()")

基本上就这么多了,对于其他的等用到了再加上去。

猜你喜欢

转载自blog.csdn.net/u013762572/article/details/81780824