Python 在Beauty Soup中以没有标记的文本元素为目标

Python 在Beauty Soup中以没有标记的文本元素为目标,python,beautifulsoup,Python,Beautifulsoup,我试图在bs4中定位一个没有相关标签的日期 HTML的结构是: <div class="story-postdate"> <div class="label-inline">Published</div> Feb 6, 2020, 4:40 pm SGT </div> 出版 2020年2月6日下午4:40中士 我尝试了.findAll(attrs={'class':'story postdate'}),然后尝试使用同级选择器。但是没有

我试图在
bs4
中定位一个没有相关标签的日期

HTML的结构是:

<div class="story-postdate">
  <div class="label-inline">Published</div>
  Feb 6, 2020, 4:40 pm SGT
</div>

出版
2020年2月6日下午4:40中士
我尝试了
.findAll(attrs={'class':'story postdate'})
,然后尝试使用
同级
选择器。但是没有快乐

我还尝试在CSS选择器的末尾添加
.text
。但它仍然返回一个none对象类型

from bs4 import BeautifulSoup as soup

html = '''<div class="story-postdate">
  <div class="label-inline">Published</div>
  Feb 6, 2020, 4:40 pm SGT
</div>'''

b = soup(html, 'html.parser')
div_tag = b.findAll(attrs={'class' : 'story-postdate'})
for div in div_tag:
    print(" ".join(div.text.split()[1:]))
或:

输出:

Feb 6, 2020,
试试这个

from bs4 import BeautifulSoup
from simplified_scrapy import SimplifiedDoc
html = """<div class="story-postdate">
  <div class="label-inline">Published</div>
  Feb 6, 2020, 4:40 pm SGT
</div>"""

# using BeautifulSoup
soup = BeautifulSoup(html,features='lxml')
print (soup.find('div',attrs={'class' : 'story-postdate'}).div.next_sibling)

# using SimplifiedDoc
doc  = SimplifiedDoc(html)
print (doc.select('div.story-postdate>div').nextText())
从bs4导入美化组
从simplified_scrapy导入SimplifiedDoc
html=”“”
出版
2020年2月6日下午4:40中士
"""
#使用BeautifulSoup
soup=BeautifulSoup(html,features='lxml')
打印(soup.find('div',attrs={'class':'story postdate'}).div.next\u同级)
#使用SimplifiedDoc
doc=SimplifiedDoc(html)
打印(doc.select('div.story-postdate>div').nextText()

下面是SimplifiedDoc库的更多示例:

什么是“没有与之关联的标记”?文本是您的第一个div的子项。我的意思是没有使用xpath或css选择器直接指向的标记。是否接受Jquery解决方案?(用vanilla JS很难解决这个问题,但用jquery很容易)。您的问题与CSS(样式“选择”“2020年2月6日…”)或通过js选择文本节点有关?你的最终目标是什么?
Feb 6, 2020,
from bs4 import BeautifulSoup
from simplified_scrapy import SimplifiedDoc
html = """<div class="story-postdate">
  <div class="label-inline">Published</div>
  Feb 6, 2020, 4:40 pm SGT
</div>"""

# using BeautifulSoup
soup = BeautifulSoup(html,features='lxml')
print (soup.find('div',attrs={'class' : 'story-postdate'}).div.next_sibling)

# using SimplifiedDoc
doc  = SimplifiedDoc(html)
print (doc.select('div.story-postdate>div').nextText())