所以我想要做的是:https://www.jobbank.gc.ca/jobsearch/jobsearch?sort=D&fsrc=16&fbclid=IwAR2SIG3lbY1S9lO4WilcKw6TxJAJQbFIGYTVE_tOTqYRpb43qM3uYgLWV64然后重定向到另一個頁面,然后重定向到另一個頁面是一個按鈕(顯示如何申請),當我們單擊該按鈕時,將顯示一個電子郵件地址。所以我想通過我的代碼抓取每個職位串列標題和電子郵件地址。我已經抓取了標題和 href,但不知道下一步該做什么(例如,點擊每個職位串列,然后點擊“顯示如何申請”并從那里抓取電子郵件)。我希望你們明白我想做什么(對不起我的英語)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import os
s = Service('C:\Program Files (x86)\chromedriver.exe')
driver = webdriver.Chrome(service=s)
driver.get('https://www.jobbank.gc.ca/jobsearch/jobsearch?sort=D&fsrc=16&fbclid=IwAR2SIG3lbY1S9lO4WilcKw6TxJAJQbFIGYTVE_tOTqYRpb43qM3uYgLWV64')
# Get titles of Job listings
elements = []
for element in driver.find_elements(By.CLASS_NAME, 'resultJobItem'):
title = element.find_element(By.XPATH, './/*[@]').text
if title not in elements:
elements.append({'Title': title.split('\n')})
# Get all href
link = driver.find_elements(By.XPATH, './/*[@]/article/a')
for links in link:
elements.append({'Link': links.get_attribute('href')})
print(elements)
uj5u.com熱心網友回復:
看起來您可以使用他們自己的 api 和 post 請求來獲取資料。
您需要抓取作業 ID。
所以對于這個 url 上的作業:https : //www.jobbank.gc.ca/jobsearch/jobposting/35213663 我看到作業 id 是 1860693。所以我需要發布這樣的請求。
import requests
from bs4 import BeautifulSoup as BS
url = "https://www.jobbank.gc.ca/jobsearch/jobposting/35213663"
jobid = "1860693"
data = {
'seekeractivity:jobid': f'{jobid}',
'seekeractivity_SUBMIT': '1',
'javax.faces.ViewState': 'stateless',
'javax.faces.behavior.event': 'action',
'jbfeJobId': f'{jobid}',
'action': 'applynowbutton',
'javax.faces.partial.event': 'click',
'javax.faces.source': 'seekeractivity',
'javax.faces.partial.ajax': 'true',
'javax.faces.partial.execute': 'jobid',
'javax.faces.partial.render': 'applynow',
'seekeractivity': 'seekeractivity'
}
response = requests.post(url, data)
soup = BS(response.text)
email = soup.a.text
print(email)
this gives me
>> [email protected]
uj5u.com熱心網友回復:
我會單獨存盤所有鏈接。
因此假設以下變數all_links包含所有鏈接。現在,
.
.
.
driver.quit()
link1 = all_links[0] # lets take the example of the first link. youd have to for loop through all the link; for link in links
new_driver = webdriver.Chrome(service=s)
new_driver.get(link1)
new_driver.find_element_by_css_selector("#applynowbutton").click()
此時,“顯示如何應用”按鈕已被單擊。
不幸的是,我對 html 知之甚少,但基本上在這一點上,您可以像以前提取所有鏈接一樣提取電子郵件
uj5u.com熱心網友回復:
嘗試如下:
可以申請scrollIntoView特定的作業選項。當它到達末尾時,單擊Show more選項并繼續提取詳細資訊。
driver.get("https://www.jobbank.gc.ca/jobsearch/jobsearch?sort=D&fsrc=16&fbclid=IwAR2SIG3lbY1S9lO4WilcKw6TxJAJQbFIGYTVE_tOTqYRpb43qM3uYgLWV64")
i = 0
while True:
try:
jobs = driver.find_elements_by_xpath("//div[@class='results-jobs']/article")
driver.execute_script("arguments[0].scrollIntoView(true);",jobs[i])
title = jobs[i].find_element_by_xpath(".//span[@class='noctitle']").text
link = jobs[i].find_element_by_tag_name("a").get_attribute("href")
print(f"{i 1} - {title} : {link}")
i =1
if i == 100:
break
except IndexError:
driver.find_element_by_id("moreresultbutton").click()
time.sleep(3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/349824.html
