Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元素共享类名并动态移动Python/BS4_Python_Python 3.x_Beautifulsoup - Fatal编程技术网

元素共享类名并动态移动Python/BS4

元素共享类名并动态移动Python/BS4,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,几个元素具有相同的类名。我遇到的问题是,当他们每隔一页更改一次位置时,就要抓住正确的一页 有时它是第一个,以及介于两者之间的一切 有没有办法将文本“CEO”作为参考来获取下一个span文本 我只需要名字 当它在正确的位置时,它就起作用了 title = find_all("//span[@class='KeyDetail'and text()='CEO']")[3] name = title.find_all('span')[1].text <div class="DetailsLi

几个元素具有相同的类名。我遇到的问题是,当他们每隔一页更改一次位置时,就要抓住正确的一页

有时它是第一个,以及介于两者之间的一切

有没有办法将文本
“CEO”
作为参考来获取下一个span文本

我只需要名字

当它在正确的位置时,它就起作用了

title = find_all("//span[@class='KeyDetail'and text()='CEO']")[3]
name = title.find_all('span')[1].text



<div class="DetailsList">
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
  <div class="KeyDetail">...</div>
    <span class="header">CEO</span>
    <span class="text">Joe Smith</span>
</div>
title=find_all(//span[@class='keydeail'和text()='CEO'])[3]
name=title.find_all('span')[1]。文本
...
...
...
...
...
...
首席执行官
乔-史密斯
使用find(text='CEO'),然后使用nextSibling查找元素,尝试以下操作


很好用!非常感谢!
from bs4 import BeautifulSoup

html = '<div class="DetailsList">' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div> ' \
       '<div class="KeyDetail">...</div>  ' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<span class="header">Hello</span>' \
       '<span class="text">Joe Smith</span></div> ' \
       '<div class="DetailsList">' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div> ' \
       '<div class="KeyDetail">...</div>  ' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<div class="KeyDetail">...</div>' \
       '<span class="header">CEO</span>' \
       '<span class="text">Ryan Evans</span></div> '

soup = BeautifulSoup(html, features="lxml")

for span in soup.find_all('span'):
    if span.find(text='CEO'):
        ceo_name = span.nextSibling
        print(ceo_name.text)
Ryan Evans