python版 完整xpath路径 转css path

python版 完整xpath转css path

注:针对页面带有shadowRoot xpath无法定位,而复制的js css选择器路径的元素id、class会变时使用此方法,就可以复制完整xpath路径转完整css选择器路径从而定位元素。
selenium shadowRoot 定位

// 重点:一定要加return 
device.execute_script('return css选择器路径')

完整xpath转css path

import re
def xpath_as_jsPath(xpath):
    """
    python版 xpath转csspath
    :param xpath: 必须复制完整xpath可用
    :return: css选择器路径
    """
    xpath = xpath.replace("//","/MyshadowRoot/")
    xpath = xpath.replace("/html/","")
    tagNames = xpath.split("/")
    jsPath = 'document.querySelector("'
    for i,tagName in enumerate(tagNames):
        index = None
        indexs = re.findall("\d+", tagName)
        if "[" in tagName and len(indexs)>0:
            index = indexs[0]
            tagName = tagName.replace(f"[{index}]","")

        if tagName:
            if "MyshadowRoot" != tagName:
                jsPath+= f"{tagName}:nth-of-type({index})" if index else f"{tagName}"
                if len(tagNames) != i+1 and tagNames[i+1] != "MyshadowRoot":
                    jsPath+= " > "
                else:
                    jsPath += '")'
            else:
                jsPath+= '.shadowRoot.querySelector("'

    return jsPath

if __name__ == '__main__':
    xpath = "/html/body/div/div[2]/div/div/div[2]/div/div[1]/div[4]/div/div[1]/kat-date-picker//div"

    print(xpath_as_jsPath(xpath))

示例:document.querySelector("body > div > div:nth-of-type(2) > div > div > div:nth-of-type(2) > div > div:nth-of-type(1) > div:nth-of-type(4) > div > div:nth-of-type(1) > kat:nth-of-type(picker) > ").shadowRoot.querySelector(“div”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您介绍一下如何使用Selenium库和XPATHCSS选择器来爬取携程网信息。 首先,您需要安装Selenium库和浏览器驱动程序。Selenium库可以通过pip安装,而浏览器驱动程序需要根据您使用的浏览器进行选择和下载。这里以Chrome浏览器为例,您可以下载Chrome浏览器驱动程序。 接下来,您需要使用Selenium库来启动浏览器并进入携程网。示例代码如下: ```python from selenium import webdriver driver = webdriver.Chrome('/path/to/chromedriver') # 指定浏览器驱动程序路径 driver.get('https://www.ctrip.com/') # 进入携程网首页 ``` 然后,您可以使用XPATHCSS选择器来定位页面元素并提取数据。以下是一个使用XPATH选择器来提取携程网搜索框中的关键字的示例代码: ```python from selenium import webdriver driver = webdriver.Chrome('/path/to/chromedriver') driver.get('https://www.ctrip.com/') # 使用XPATH选择器定位搜索框元素,并输入关键字 search_box = driver.find_element_by_xpath('//input[@id="HD_CityName"]') search_box.send_keys('北京') ``` 同样地,您也可以使用CSS选择器来定位页面元素。以下是一个使用CSS选择器来提取携程网搜索框中的关键字的示例代码: ```python from selenium import webdriver driver = webdriver.Chrome('/path/to/chromedriver') driver.get('https://www.ctrip.com/') # 使用CSS选择器定位搜索框元素,并输入关键字 search_box = driver.find_element_by_css_selector('#HD_CityName') search_box.send_keys('北京') ``` 除了以上示例代码,您还可以使用Selenium库和XPATHCSS选择器来定位其他页面元素并提取数据。希望以上内容能够对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_JackSparrow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值