Просматривая в Интернете, я увидел, что ссылка всегда на два уровня выше описания.Затем вы используете функцию find_parent()
для получения тега a
найденных вакансий.
У вас есть код:
jobs = soup.find_all('p',text=re.compile(r'\b(?:%s)\b' % '|'.join(keywords)))
Затем после этого добавьте:
for i in jobs:
print(i.find_parent('a').get('href'))
Это распечатает ссылки. Обратите внимание, что эти ссылки являются относительными, а не абсолютными .Вы должны добавить рут, чтобы найти конкретную страницу.Например, если вы обнаружите, что одна ссылка: ETender.aspx?id=ed60009c-8d64-4759-a722-872e21cf9ea7&action=show
.Вы должны добавить в начало: https://www.auftrag.at/
.Будучи последней ссылкой: https://www.auftrag.at/ETender.aspx?id=ed60009c-8d64-4759-a722-872e21cf9ea7&action=show
Если вы хотите, вы можете добавить их в список, как вы делаете с описаниями рабочих мест.Полный код (без сохранения в csv) будет выглядеть так:
import re, requests, time, os, csv, subprocess
from bs4 import BeautifulSoup
def get_jobs(url):
keywords = ["KI", "AI", "Big Data", "Data", "data", "big data", "Analytics", "analytics", "digitalisierung", "ML",
"Machine Learning", "Daten", "Datenexperte", "Datensicherheitsexperte"]
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}
html = requests.get(url, headers=headers, timeout=5)
time.sleep(2)
soup = BeautifulSoup(html.text, 'html.parser')
jobs = soup.find_all('p',text=re.compile(r'\b(?:%s)\b' % '|'.join(keywords)))
# links = jobs.find_all('a')
jobs_found = []
links = []
for word in jobs:
jobs_found.append(word)
links.append(word.find_parent('a').get('href'))
with open("jobs.csv", 'a', encoding='utf-8') as toWrite:
writer = csv.writer(toWrite)
writer.writerows(jobs_found)
# subprocess.call('./Autopilot3.py')
print("Matched Jobs have been collected.")
return soup, jobs
soup, jobs = get_jobs('https://www.auftrag.at//tenders.aspx')
Если вы хотите добавить полный URL, просто измените строку:
links.append(word.find_parent('a').get('href'))
На:
links.append("//".join(["//".join(url.split("//")[:2]),word.find_parent('a').get('href')]))