版权声明:本文为博主原创文章,未经博主允许不得转载。 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()")
基本上就这么多了,对于其他的等用到了再加上去。