Python 基于textContent获取CSS选择器或XPath

Python 基于textContent获取CSS选择器或XPath,python,web-scraping,beautifulsoup,scrapy,Python,Web Scraping,Beautifulsoup,Scrapy,据我所知,Python库(如BeautifulSoup或scrapy)可以为提供的CSS选择器或XPath返回文本内容。 我所寻找的恰恰相反——我想提供一个需要删除的文本,并希望获得CSS选择器或XPath来获取该文本 这是可以用现有的库来完成的吗 html=”“” 文章标题 第1条段落文本 第2条段落文本 """ # ... 使用get_selector_by_text_content()这里有一些魔力 article_title_selector=通过文本内容(“文章标题”,html)获取_

据我所知,Python库(如BeautifulSoup或scrapy)可以为提供的CSS选择器或XPath返回文本内容。 我所寻找的恰恰相反——我想提供一个需要删除的文本,并希望获得CSS选择器或XPath来获取该文本

这是可以用现有的库来完成的吗

html=”“”
文章标题

第1条段落文本

第2条段落文本

""" # ... 使用get_selector_by_text_content()这里有一些魔力 article_title_selector=通过文本内容(“文章标题”,html)获取_selector_#“h1.some class” article_body_selector=get_selector_by_text_content(“article段落文本1.\n段落文本2.”,html)#“div.article-text>p”
如果可以使用lxml,则可以获取所提供文本的xpath:

import lxml.html
from lxml import etree

targets = ['Article title','Article paragraph text 1.','Article paragraph text 2.']

root = lxml.html.fromstring(html)
tree = etree.ElementTree(root)
for e in root.iter():
    for target in targets:
        if e.text== target:
            print(tree.getpath(e))
输出:

/div/h1
/div/div/p[1]
/div/div/p[2]

它应该是
/*[contains(text(),'text')]
:contains(“text”)
(使用cssselect)