• 售前

  • 售后

热门帖子
入门百科

Scrapy元素选择器Xpath用法汇总

[复制链接]
刘金栋 显示全部楼层 发表于 2021-10-26 13:04:52 |阅读模式 打印 上一主题 下一主题
众所周知,在筹划爬虫时,最贫苦的一步就是对网页元素举行分析,目前盛行的网页元素获取的工具有BeautifulSoup,lxml等,而据我使用的体验而言,Scrapy的元素选择器Xpath(团结正则表达式)是其中较为出色的一种(个人以为最好啦,固然只能在Scrapy中使用)功能相对较全、使用较为方便,正因为它的丰富性,偶然许多功能会忘记,以是在这里整理好记录下来,方便以后查阅使用。
1. 元素的多级定位与跳级定位


多级定位:依赖html中的多级元素逐步缩小范围
  1. response.xpath('//table/tbody/tr/td')
  2. //如果知道元素所属的下标可以用下标选择
  3. response.xpath('//table/tbody/tr[1]/td')
复制代码
跳级定位:符号“//”表示跳级定位,即对当前元素的所有层数的子元素(不但是第一层子元素)举行查找,一般xpath的开头都是跳级定位
  1. response.xpath('//span//table')
复制代码
2. 依赖元素的属性定位


每个html元素都有许多属性,如id、class、title、href、text(href和text每每可以共同正则表达式)等,这些属性每每具有很强的特殊性,团结元素多级定位或跳级定位会更正确高效,下面举几个典范的例子,其他的举一反三
利用class定位
  1. response.xpath('//td[@class="mc_content"]')
复制代码
利用href共同正则表达式定位
  1. response.xpath('//a[re:test(@href,"^\/index\.php\?m=News&a=details&id=1&NewsId=\d{1,4}")]')
复制代码
利用text团结正则表达式定位
  1. a=response.xpath('//a[re:test(text(),"\w{4}")]')
复制代码
此外,xpath还有对于html元素操作的两个实用的函数(可以用正则表达式代替)——starts-with和contains;
  1. a=response.xpath('//a[starts-with(@title,"注册时间")]')
  2. a=response.xpath('//a[contains(text(),"闻")]')
复制代码
3. 提取元素或元素的属性值


首先是最根本的extract()函数,提取被定为的元素对象
  1. a=response.xpath('//a[contains(text(),"闻")]').extract()
  2. //如果被定为的元素对象有多个,可以有用下标指定
  3. a=response.xpath('//a[contains(text(),"闻")]').extract()[1]
复制代码
提取元素的属性
  1. //提取text
  2. a=response.xpath('//a[contains(text(),"闻")]/text()').extract()
  3. //获取href
  4. a=response.xpath('//a[contains(text(),"闻")]/@href').extract()
  5. //获取name
  6. a=response.xpath('//a[contains(text(),"闻")]/@name').extract()
复制代码
此时我们的正则表达式又闲不住了(scrapy自带的函数),可以对提取的元素举行选择
  1. //对href中的部分字符串进行选择
  2. response.xpath('//a[@name="_l_p_n"]/@href').re('\/s.*?list\.htm')
复制代码
在这里关于xpath的所有效法根本总结完毕,只是由于xpath是对静态元素举行匹配选择,对于javascript每每一筹莫展,这时不得不用一个自动化测试工具——selenium,可以实现各种动态事件和静态元素的选择,只是selenium每每比较吃内存,响应时间也比较慢,对于大型的爬虫任务只管不要使用,毕竟有一些javascript元素是内嵌在网页代码中的,这时候团结全能的正则表达式,xpath每每能够实现。如下:
  1. link = re.search("javascript:goToPage\('(.*?)'", value) //value为包含该段的字符串
复制代码
到此这篇关于Scrapy元素选择器Xpath用法汇总的文章就先容到这了,更多相干Scrapy元素选择器Xpath 内容请搜索草根技能分享从前的文章或继续欣赏下面的相干文章盼望各人以后多多支持草根技能分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作