您无法获取链接,导致网站使用 AJAX 请求更新页面。但是您可以解析所有需要的数据。例如,我从开始页面获取 ID,从详细信息页面获取日程安排。您可以使用下一个代码
import requests
import copy
from bs4 import BeautifulSoup
# create url
url = 'https://ps.its.rochester.edu/psc/PSApplyOnline/EMPLOYEE/HRMS/c/HRS_HRAM_FL.HRS_CG_SEARCH_FL.GBL'
# create session
session = requests.Session()
# get auth page
start_page = session.get(url, params={
'Page': 'HRS_APP_SCHJOB_FL', 'Action': 'U'
})
soup = BeautifulSoup(start_page.text, 'html.parser')
# collect params
form = soup.find('form', {'id': 'HRS_CG_SEARCH_FL'})
params = {}
for input_data in form.find_all('input', {'type': 'hidden'}):
try:
class_element = input_data['class']
except KeyError:
params[input_data['id']] = input_data['value']
# find content panel
content_panel = soup.find('div', {'class': 'psc_panel-content'})
# find elements
jobs_list = content_panel.find('ul', {'class': 'ps_grid-body'})
jobs = jobs_list.find_all('li', {'class': 'ps_grid-row'})
for job in jobs:
# get button data
button_div = job.find('div', {'class': 'hrs_cg_tapout_btn0'})
job_id = button_div.find('a')['id']
# display id
job_id_display_element = job.find('div', {'class': 'psc_num'})
id_data = job_id_display_element.find(
'span', {'class': 'ps_box-value'}
).text
# get detail info
send_params = copy.deepcopy(params)
send_params['ICAction'] = job_id
# details
detail = session.post(url, data=send_params)
soup_detail = BeautifulSoup(detail.content, 'html.parser')
# find schedule
main_data = soup_detail.find_all('div', {'class': 'psc_bordert'})
groups = main_data[1].find_all('div', {'class': 'ps_box-scrollarea-row'})
time = groups[1].find('span', {'class': 'ps_box-value'}).text
print('JOB ID: {}. Schedule: {}'.format(id_data, time.replace('\n', '')))
JOB ID: 229725. Schedule: 8 AM-6:00 PM
JOB ID: 229926. Schedule: VARIES; E/O WKND/HOL
JOB ID: 229968. Schedule: D/E/N; WE/HOL
JOB ID: 229973. Schedule: D/E/N; WE/HOL
JOB ID: 229967. Schedule: D/E/N; WE/HOL
JOB ID: 229918. Schedule: VARIES; E/O WE/HOL
...
附:如果我的回答对您有帮助,请将其标记为正确:)