簡體   English   中英

Oracle HRMS 如何獲得職位的完整描述?

[英]How does Oracle HRMS get job post's full description?

由於對javascript的理解有限,我發現HRMS刷新頁面並在工作列表頁面的相同URL下顯示工作詳細信息頁面。 我假設網絡請求會發送某種作業詳細信息,但在檢查請求后,其中大部分是 javascript 文件。

我們以 UR 職業頁面為例https://ps.its.rochester.edu/psc/PSApplyOnline/EMPLOYEE/HRMS/c/HRS_HRAM_FL.HRS_CG_SEARCH_FL.GBL?Page=HRS_APP_SCHJOB_FL&Action=U

有很多請求,但我找不到一個看起來可能包含工作詳細信息或工作發布鏈接的請求。 在此處輸入圖片說明

然后我查看了 HTML 代碼(The Elements),發現作業詳細信息的 href 在 js params 下:

<div class="ps_box-button psc_image_only hrs_cg_tapout_btn0" id="win0divHRS_VIEW_DETAILSPB$0">
  <span class="ps-button-wrapper" title="View Job Description">
    <a id="HRS_VIEW_DETAILSPB$0" class="ps-button" role="button" onclick="javascript:cancelBubble(event);" href="javascript:submitAction_win0(document.win0,'HRS_VIEW_DETAILSPB$0');">
      <img src="/cs/PSApplyOnline/cache/PT85713/PT_NUI_CHEVRON_1.svg" name="HRS_VIEW_DETAILSPB$IMG$0" class="ps-img" alt="View Job Description">
    </a>
  </span>
</div>

我的問題來了,如何使用關鍵字抓取特定職位的鏈接? 似乎無法檢索職位發布鏈接,因為即使我單擊了職位詳細信息按鈕,該頁面也沒有更改其鏈接,而只是刷新了其頁面內容。 但是,Oracle HRMS 如何獲得完整的工作詳細信息? 通過某種請求?

提前欣賞任何想法和解決方案!

您無法獲取鏈接,導致網站使用 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
...

PS,如果我對您的回答有幫助,請將其標記為正確:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM