xpath在爬虫中的使用

xpath的语法:

  • 路径查询

      // 查找所有的子孙节点,不考虑层级。

      / 找直接子节点

     ./a/@href  当前路径

     ../span/text()  父级下的span的文本内容

     /*  任意一个子节点

     //*  任意的子孙节点

  • 谓语查询

      //div[@id]   查找包含所有id属性的div节点

      //div[@id='maincontent']   查找id属性值为maincontent的div节点

  • 属性查询

        //@class   查找出所有的class属性

  • 逻辑查询

     //div[@id='head'  and  @class ='s_down']   查找所有id属性等于head并且class属性等于s_down的div标签

     //title | //price   选取文档中的所有 title 和 price 元素。注意: “|”两边必须是完整的xpath路径

     eg.    //book/letter/author
             //book/letter/price

             //book/letter/author | //book/letter/price

  • 模糊查询

     //div[contains(@id,'he')]   查询所有id属性包含he的div节点

     //div[starts-with(@id,'he')]   查询所有id属性中以he做开头的的div属性

    //div[ends-with(@id,'he')]   查询所有id属性中以he结尾的div属性

    //ul/li/[last()]/a/@href    ul中最后一个li内的a元素的href属性值

    //ul/li[-2]/a/@href    所有ul标签中的倒数第二个li标签中的a的href的属性值

  • 内容查询

    //div/h1/text()    查找所有div标签下的直接子节点h1的内容

xpath的使用

安装lxml库

pip install lxml

安装xpath插件

1、chrome  安装

2、ctrl+shift+x  打开控制台

3、shift+选择网页内容

使用示例

# 导入lxml.etree
from lxml import etree
# etree.parse,对html文件的解析
html_tree=etree.parse('XX.html')
# etree.HTML(),对字符串的解析
html_etree=etree.HTML(response.read().decode('utf-8'))
html_tree.xpath('//a/@href')  #根据xpath规则来解析html_tree


使用xpath路径查询信息,返回一个列表

from lxml import etree

html = '<div><a><img src="a.jpg"></a></div>'
html_tree = etree.HTML(html)
list = html_tree.xpath('//div//img/@src')
print(list)

对于连接查询的写法(示例,其中.必写,代表当前的xpath下的xpath)

 with open('wyy/'+f'wangyiyun{page}.html','rb') as f:
            html=f.read()

        et=etree.HTML(html)
        total=et.xpath("//div[@class='uc-ykt-coursecard-wrap_box']")

 for x in total:
     src_=x.xpath('.//img/@src')[0]
     name=x.xpath("./div[@class='uc-ykt-coursecard-wrap_orgName f-fs0 f-thide']/text()")[0]
     name=name.replace('\n','')

 

提取,编辑和轻松评估XPath查询。 XPath的助手很容易提取,编辑,并在任何网页评估XPath查询。 重要提示:安装此扩展后,必须重新加载任何现有的选项卡或重新启动Chrome浏览器扩展工作。 说明: 1.打开一个新的标签,并导航到任何网页。 2.按Ctrl-Shift键-X(或OS X命令移-X),或单击工具栏上的XPath的助手按钮,以打开XPath助手控制台。 3.按住Shift键将鼠标悬停在页面上的元素。查询框将不断更新,以显示鼠标指针下方的元件XPath查询,结果框将显示当前查询的结果。 4.如果需要,请在控制台直接编辑XPath查询。结果框会立即反映更改。 5.重复步骤(2)关闭控制台。 如果控制台在你的方式获得,按住Shift键,然后将鼠标移动到它; 它会移动到页面的相对侧。 一个忠告:当渲染HTML表格,浏览器插入人工<TBODY>标记到DOM,这将在随后通过该扩展提取查询显示出来。 Extract, edit, and evaluate XPath queries with ease. XPath Helper makes it easy to extract, edit, and evaluate XPath queries on any webpage. IMPORTANT: After installing this extension, you must reload any existing tabs or restart Chrome for the extension to work. Instructions: 1. Open a new tab and navigate to any webpage. 2. Hit Ctrl-Shift-X (or Command-Shift-X on OS X), or click the XPath Helper button in the toolbar, to open the XPath Helper console. 3. Hold down Shift as you mouse over elements on the page. The query box will continuously update to show the XPath query for the element below the mouse pointer, and the results box will show the results for the current query. 4. If desired, edit the XPath query directly in the console. The results box will immediately reflect your changes. 5. Repeat step (2) to close the console. If the console gets in your way, hold down Shift and then move your mouse over it; it will move to the opposite side of the page. One word of caution: When rendering HTML tables, Chrome inserts artificial <tbody> tags into the DOM, which will consequently show up in queries extracted by this extension.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值