python css和xpath_一文学会Python爬虫框架scrapy的XPath和CSS选择器语法与应用

原标题:一文学会Python爬虫框架scrapy的XPath和CSS选择器语法与应用

天猫、当当均有销售,可以选择自己常用平台搜索“董付国 第3版”找到本书。

Scrapy使用自带的XPath选择器和CSS选择器来选择HTML文档中特定部分的内容,XPath是用来选择XML和HTML文档中节点的语言,CSS是为HTML文档应用样式的语言,也可以用来选择具有特定样式的HTML元素。使用XPath选择器和CSS选择器解析网页的速度要比BeautifulSoup快一些。

读取目标网页成功后,自动调用回调函数parse,在回调函数parse中使用response对象表示服务器返回的网页源代码,response对象的selector属性可以创建相应的选择器对象,然后再调用xpath或css方法获取指定的内容,也可以直接使用response对象的xpath和css方法进行选择,然后调用get方法获取第一项结果、调用getall和extract方法获取包含所有结果的列表、调用re和re_first方法使用正则表达式对提取到的内容进行二次筛选(后者只返回第一项结果)。

表1 XPath选择器常用语法

语法示例

功能说明

div

选择当前节点的所有 div子节点

/div

选择根节点 div

//div

选择所有 div节点,包括根节点和子节点

//ul/li

选择所有 ul节点的子节点 li

//div/@id

选择所有 div节点的 id属性

//title/text

选择所有 title节点的文本

//div/span[2]

选择 div节点内部的第 2个 span节点

//div/a[last]

选择 div节点内部最后一个 a节点

//div/a[last-1]

选择 div节点内部倒数第二个 a节点

//a[position>3]

选择每组中第 4个开始往后的 a节点

//a[starts-with(@href, "i")]

选择所有 href属性以 "i"开头的 a节点

//a[contains(@href, "image")]

选择所有 href属性中包含 "image"的 a节点

//a[contains(@href, "image") and contains(@href, "4")]

选择所有 href属性同时包含 "image"和 "4"的 a节点

//@src

选择所有节点的 src属性

//@*

选择所有节点的任意属性

//img[@src]

选择所有具有 src属性的 img节点

//div[@id="images"]

选择所有 id="images"的 div节点

//img | //title

选择所有 img和 title节点

//br//../img

选择所有 br节点的父节点下面的 img子节点

./img

选择当前节点中的所有 img子节点

表2 CSS选择器常用语法

语法示例

功能说明

#images

选择所有 id=images的所有节点

.redText

选择所有 class=redText的节点

ul li

选择所有位于 ul节点内部的 li子节点

ul>li

选择所有位于 ul节点内的直接子节点 li

base+title

选择紧邻 base节点后面的第一个平级 title节点

br~img

选择所有与 br节点相邻的平级 img节点

div#images [href]

选择 id=images的 div中所有带有 href属性的子节点

div:not(#images)

选择所有 id不等于 images的 div节点

a:nth-child(3)

选择第 3个 a节点

a:nth-child(2n+1)

选择所有第奇数个 a节点

a:nth-child(2n)

选择所有第偶数个 a节点

li:last-child

选择每组中最后一个 li节点

li:first-child

选择每组中第一个 li节点

[href$=".html"]

选择所有 href属性以".html"结束的节点

[href^="image"]

选择所有 href属性以"image"开头的节点

a[href*="3"]

选择所有 href属性中包含"3"的 a节点

测试网页(4index.html,后台发送消息“选择器”获取下载地址):

演示代码:

,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(已累计印刷超过100次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1000篇原创技术文章;发送消息“会议”或“培训”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过500节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习1235道客观题和139道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。返回搜狐,查看更多

责任编辑:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值