Python爬虫笔记之css、xpath查找


前言

记录使用css和xpath查找元素的基本方法。

css selector

  • *所有元素
  • .xxx class为xxx的元素
  • #xxx id为xxx的元素
  • E 所有E标签
  • E,F 所有E,F标签
  • E F E的所有F后代
  • E>F 所有E中的F标签
  • E+F E之后的所有F
  • E[att1=’…’][att2=’…’] 属性为…的E标签
  • ^= 以…开头,$= 以…结尾,*= 包含…
  • E:contains(‘xxx’) 内容包含xxx的E标签

xpath selector

  • / 绝对路径 //相对路径
  • E[@att1=’…’][@att2=’…’] 属性为…的E元素
  • //*/E[7]/F[last()] 第8个E下的最后一个F
  • | 或
  • text() 文本内容
  • @属性
  • contains() 含,starts_with() 开头

查找元素

不同库中内置的css和xpath使用有所不同。
1.1 bs4

soup.select(<查找条件>)
soup.select(".xxx")#class为xxx的标签
soup.select("#xxx") #id为xxx的标签

1.2 lxml

<标签>.xpath("<路径>[<查找条件>]/<查找内容>")
from lxml import etree
root=etree.HTML(r.text)
a=root.xpath("//a[contains(@xxx,'yyy')]") #查找标签
a.xpath("/b/@xxx") #查找xxx属性
或root.xpath("//a[contains(@xxx,'yyy')]/b/@xxx")

2 . scrapy

response.css("<查找条件>::<查找内容>").extract()
response.css(".xxx::text").extract() #class为xxx的文本
response.css("#xxx::attr(yyy)").extract() #id为xxx的yyy属性
response.xpath("<路径>[<查找条件>]/<查找内容>")
response.xpath("//a[contains(@xxx,'yyy')]") #xxx属性为yyy的a元素
response.xpath("//a[text()='xxx']") #文本为xxx的a元素
response.xpath("//span/a").re(r'xxx',str(response.body)) #与re配合使用

3 . selenium

element=driver.find_element_by_css_selector("<查找条件>")
element=driver.find_element_by_xpath("<路径>[<查找条件>]")
element.text #文本
element.get_attribute("xxx") #属性

总结

css和xpath查找灵活,支持模糊搜索,不同库内置的css使用有所不同,xpath的使用大体相同,在查找requests库爬取结果时,可以将css与BeautifulSoup或者xpath与lxml结合使用,从而减少对标签的迭代操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值