Как получить конкретную c текстовую информацию без уникальных элементов в Python Beautiful Soup? - PullRequest
2 голосов
/ 29 мая 2020

Я хотел бы просто получить текст открытых позиций с этого сайта: https://www.praeses.com/careers/. Я копирую и вставляю класс, и он извлекает текст с большей части сайта, потому что почти все использует этот класс, но нет других уникальных данных для извлечения. Как мне просто получить открытые позиции? Я в основном получаю все с "классом".

<a class="et_pb_button et_pb_custom_button_icon et_pb_button_1 et_hover_enabled et_pb_bg_layout_dark" href="https://www.praeses.com/senior-national-accounts-manager/" data-icon="5">Senior National Accounts Manager</a>
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 job in praeses_soup.find_all('et_pb_button et_pb_custom_button_icon et_pb_button_1 et_hover_enabled et_pb_bg_layout_dark'):
    print(praeses_soup.text)

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Попробуйте вот так:

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
1 голос
/ 29 мая 2020

Вы можете использовать селектор 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']))

Печать:

Senior National Accounts Manager        https://www.praeses.com/senior-national-accounts-manager/
National Accounts Manager               https://www.praeses.com/national-accounts-manager/
Cloud Architect                         https://www.praeses.com/cloud-architect/
Front-End Developer                     https://www.praeses.com/front-end-developer/
Senior Project Manager (GOV)            https://www.praeses.com/senior-project-manager-gov/
...