如何在Python Beautiful Soup中获得没有唯一元素的特定文本信息?

如何在Python Beautiful Soup中获得没有唯一元素的特定文本信息?,python,beautifulsoup,Python,Beautifulsoup,我想从这个网站上获取空缺职位文本:。我复制并粘贴了这个类,它从站点的大部分地方提取文本,因为几乎所有的东西都使用这个类,但是没有其他唯一的数据可以提取。我怎样才能得到空缺职位?我基本上都是通过“a级”考试 导入请求 从bs4导入BeautifulSoup 打印(“Praeses作业:”) praeses_url=”https://www.praeses.com/careers/" praeses\u html\u text=requests.get(praeses\u url.text) p

我想从这个网站上获取空缺职位文本:。我复制并粘贴了这个类,它从站点的大部分地方提取文本,因为几乎所有的东西都使用这个类,但是没有其他唯一的数据可以提取。我怎样才能得到空缺职位?我基本上都是通过“a级”考试


导入请求
从bs4导入BeautifulSoup
打印(“Praeses作业:”)
praeses_url=”https://www.praeses.com/careers/"
praeses\u html\u text=requests.get(praeses\u url.text)
praeses\u soup=beautifulsou(praeses\u html\u文本'html.parser')
#打印(praeses_汤)
用于praeses_soup中的作业。查找所有('et_pb_按钮et_pb_自定义按钮et_pb_图标et_pb_按钮1 et_悬停启用et_pb_bg_布局\u黑暗'):
打印(praeses_soup.text)

您可以使用CSS选择器执行任务

例如:

import requests
from bs4 import BeautifulSoup

url = 'https://www.praeses.com/careers/'

soup = BeautifulSoup(requests.get(url).content, 'html.parser')

for a in soup.select('div:contains("Open Positions") ~ div > a'):
    print('{:<40}{}'.format(a.get_text(strip=True), a['href']))
试试这个:

import requests
from bs4 import BeautifulSoup

print("Praeses jobs:")
praeses_url = "https://www.praeses.com/careers/"
praeses_html_text = requests.get(praeses_url).text
praeses_soup = BeautifulSoup(praeses_html_text, 'html.parser')
# print(praeses_soup)
for j in range(1,10):
    try:
        clase = "et_pb_button et_pb_custom_button_icon et_pb_button_"+str(j)+" et_hover_enabled et_pb_bg_layout_dark"
        hola = praeses_soup.findAll("a", {"class": clase})
        print(hola[0].text)
    except:
        print("Its over")
        break

太接近了!谢谢你的快速回复。我可以告诉你,你的母语是西班牙语,因为你用的是克拉斯语,而不是class和hola。我喜欢看人们用其他语言编写代码。太棒了!我从未见过除法包含这样的语法。如果您有时间,可以解释一下~div>a部分吗?@BrandonJacobson From:
div:contains(“打开的位置”)~div>a
选择所有
标记,这些标记直接位于
标记下,前面有一个
元素,包含字符串
“打开的位置”
这些是我以前在Stack上看到的最好的答案。非常感谢你!
import requests
from bs4 import BeautifulSoup

print("Praeses jobs:")
praeses_url = "https://www.praeses.com/careers/"
praeses_html_text = requests.get(praeses_url).text
praeses_soup = BeautifulSoup(praeses_html_text, 'html.parser')
# print(praeses_soup)
for j in range(1,10):
    try:
        clase = "et_pb_button et_pb_custom_button_icon et_pb_button_"+str(j)+" et_hover_enabled et_pb_bg_layout_dark"
        hola = praeses_soup.findAll("a", {"class": clase})
        print(hola[0].text)
    except:
        print("Its over")
        break