python使用xpath获取页面元素的使用

关于python 使用xpath获取网页信息的方法?

1、xpath的使用方法?

​ XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

常用路径表达式含义

表达式 描述
/ 从根节点选取(取子节点)
// 选择的当前节点选择文档中的节点
. 选取当前节点。
选取当前节点的父节点。
@ 选取属性
* 表示任意内容(通配符)
| 运算符可以选取多个路径

常用功能函数

函数 用法 解释
startswith() xpath(‘//div[starts-with(@id,”ma”)]‘) #选取id值以ma开头的div节点
contains() xpath(‘//div[contains(@id,”ma”)]‘) #选取id值包含ma的div节点
and() xpath(‘//div[contains(@id,”ma”) and contains(@id,”in”)]‘) #选取id值包含ma的div节点
text() _.xpath('./div/div[4]/a/em/text()') #选取em标签下文本内容

备注:

1、html中当相同层次存在多个标签例如div,它们的顺序是从1开始,不是0
2、浏览器中使用开发者工具可以快速获取节点信息

2、实例:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2021/9/7 9:35
# @Author  : Sun
# @Email   : 8009@163.com
# @File    : sun_test.py
# @Software: PyCharm

import requests
from lxml import etree

def get_web_content():
    try:
        url = "htpps://***keyword=%E6%97%A0%E9%92%A2%E5%9C%88&wq=%E6%97%A0%E"
  "9%92%A2%E5%9C%88&ev=1_68131%5E&pvid=afbf41410b164c1b91d"
        "abdf18ae8ab5c&page=5&s=116&click=0 "
        header = {
            "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)"
            "AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/75.0.3770.100 Safari/537.36 "}
        response = requests.request(method="Get", url=url, headers=header)
        result = response.text
        return result
    except TimeoutError as e:
        return None

def parsing():
    result = get_web_content()
    if result is not None:
        html = etree.HTML(result)
        # 先获取一个大的节点,包含了想要获取的所有信息
        ii = html.xpath('//*[@id="J_goodsList"]/ul/li')

        for _ in ii:
        # 采用循环,依次从大节点中获取小的节点内容
            # ''.join() 将列表中的内容拼接成一个字符串
            infoResult = {
            	# @href 表示:获取属性为href的内容
                'href': "https:" + _.xpath('./div/div[1]/a/@href')[0],
                'title': ''.join(
                        _.xpath('./div/div[2]/div/ul/li/a/@title')),
                # text()表示获取节点i里面的文本信息
                'price': _.xpath('./div/div[3]/strong/i/text()')[0],
                'info': ''.join(
                        _.xpath('./div/div[4]/a/em/text()')).strip(),
                'province': _.xpath('./div/div[9]/@data-province')[0]}
            print(infoResult)
    else:
        raise Exception("Failed to get page information, please check!")

    return None

if __name__ == '__main__':
    parsing()

结果图片:

到此这篇关于python使用xpath获取页面元素的使用的文章就介绍到这了,更多相关python xpath获取页面元素内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python lxml解析HTML并用xpath获取元素的方法

    代码 使用方法见注释 #-*- coding: UTF-8 -*- from lxml import etree source = u''' <div><p class="p1" data-a="1">测试数据1</p> <p class="p1" data-a="2">测试数据2</p> <p class="p1" data-a="

  • Python Selenium XPath根据文本内容查找元素的方法

    问题现象 元素的属性中没有id.name:虽然有class,但比较大众化,且位置也不固定:例如:页码中的下一页:那该如何找到该元素? <a class="paging">上一页</div> <a class="paging">1</div> <a class="paging">2</div> <a class="paging">下一页</

  • python使用xpath获取页面元素的使用

    关于python 使用xpath获取网页信息的方法? 1.xpath的使用方法? ​ XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 常用路径表达式含义 表达式 描述 / 从根节点选取(取子节点) // 选择的当前节点选择文档中的节点 . 选取当前节点. - 选取当前节点的父节点. @ 选取属性 * 表示任意内容(通配符) | 运算符可以选取多个路径 常用功能函数 函数 用法 解释 startswith() x

  • python xpath获取页面注释的方法

    版本信息: python 2.7.12 lxml 3.8.0 from lxml import etree html_str = """ <div id="box1">this from blog.csdn.net/lncxydjq , DO NOT COPY! <div id="box2">***** <!--can u get me, bitch?--> </div> </div

  • Python Selenium自动化获取页面信息的方法

    1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import time browser = webdriver.Chrome() browser.get('https://www.baidu.com') #打印网页标题 print(browser.title) #输出内容:百度一下,你就知道 2.获取页面URL current_url:获取当前页面的URL from selenium import webdriver

  • javascript getBoundingClientRect() 来获取页面元素的位置的代码[修正版]第1/2页

    document.documentElement.getBoundingClientRect下面这是MSDN的解释: Syntax oRect = object.getBoundingClientRect()Return Value Returns a TextRectangle object. Each rectangle has four integer properties (top, left, right, and bottom) that represent a coordinate

  • javascript 精确获取页面元素的位置

    复制代码 代码如下: //取得元素x坐标 function pageX(elem) { return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft; } //取得元素y坐标 function pageY(elem) { return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop; } 貌

  • js getBoundingClientRect() 来获取页面元素的位置

    document.documentElement.getBoundingClientRect 下面这是MSDN的解释: Syntax oRect = object.getBoundingClientRect() Return Value Returns a TextRectangle object. Each rectangle has four integer properties (top, left, right, and bottom) that represent a coordina

  • jQuery获取页面元素绝对与相对位置的方法

    本文实例讲述了jQuery获取页面元素绝对与相对位置的方法.分享给大家供大家参考.具体如下: 获取页面某一元素的绝对X,Y坐标,可以用offset()方法: var X = $('#DivID').offset().top; var Y = $('#DivID').offset().left; 获取相对(父元素)位置: var X = $('#DivID').position().top; var Y = $('#DivID').position().left; var pleft = $("s

  • Js与Jq 获取页面元素值的方法和差异对比

    JS与Jquery 都能获取页面元素的宽度,高度和相对位移等数值,那他们之间能相互转换或替代吗,写法又有哪些差异呢?本文将详细为你介绍. 1.Js获取浏览器高度和宽度 document.documentElement.clientWidth ==> 浏览器可见区域宽度 document.documentElement.clientHeight ==> 浏览器可见区域高度 document.body.clientWidth ==> BODY对象宽度 document.body.client

  • JavaScript获取页面元素的常用方法详解

    1.通过标签获取元素,返回一个数组 var li = document.getElementsByTagName('li');//标签获取元素 li[0].innerHTML;// 查看获取元素的内容 li[0].innerHTML = "content";//修改获取到标签中的内容 2.通过id获取页面元素 var header = document.getElementById("header");//id获取元素 3.通过class名字获取页面元素 var l

  • python的xpath获取div标签内html内容,实现innerhtml功能的方法

    python的xpath没有获取div标签内html内容的功能,也就是获取div或a标签中的innerhtml,写了个小程序实现一下: 源代码 [webadmin@centos7 csdnd4q] #162> vim /mywork/python/csdnd4q/z040.py #去掉最外层标签,保留其内的所有html标记和文本 def getinnerhtml(data): return data[data.find(">")+1:data.rfind("<

随机推荐