Flask не выводит нужные мне строки 'title' и 'link'

from flask import Flask, render_template, request, redirect
from parser import get_jobs

app = Flask('Job')

db = {}


@app.route('/')
def home():
    return render_template('home.html')

@app.route('/report')
def report():
    keyword = request.args.get('keyword')
    if keyword is not None:
        keyword = keyword.lower()
        getDb = db.get(keyword)
        if getDb:
            jobs = getDb
        else:
            jobs = get_jobs(keyword)
            db[keyword] = jobs
        print(jobs)
    else:
        return redirect('/')
    return render_template('report.html', searchBy=keyword, resultsNumber=len(jobs), jobs=jobs)


app.run()

Это сам Flask

import requests
from bs4 import BeautifulSoup

ITEMS = 100

headers = {
    'Host': 'hh.ru',
    'User-Agent': 'Safari',
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, br',
    'Connection': 'keep-alive'
}


def extract_max_page(url):
    hh_request = requests.get(url, headers=headers)
    # print(hh_request)
    soup = BeautifulSoup(hh_request.text, 'html.parser')

    pages = []

    pagenator = soup.find_all("span", {'class': 'pager-item-not-in-short-range'})

    for page in pagenator:
        pages.append(int(page.find("a").text))
    return pages[-1]


def extract_job(html):
    title = html.find('a').text
    link = html.find('a')['href']
    # location = html.find('div', {'data-qa': 'vacancy-serp__vacancy-address'})
    return {
        'Название вакансии': title,
        'Ссылка': link
    }


def extract_jobs(last_page, url):
    jobs = []
    for page in range(last_page):
        print(f'Headhunter: парсинг страницы {page}')
        result = requests.get(f'{url}&page={page}', headers=headers)
        # print(result.status_code)
        bsoup = BeautifulSoup(result.text, 'lxml')
        results = bsoup.find_all('div', {'class': 'vacancy-serp-item'})
        for result in results:
            job = extract_job(result)
            jobs.append(job)
    return jobs


def get_jobs(keyword):
    url = f'https://hh.ru/search/vacancy?area=1&schedule=remote&text={keyword}&currency_code=RUR&L_save_area=true&page=0&items_on_page={ITEMS}'
    max_page = extract_max_page(url)
    jobs = extract_jobs(max_page, url)
    return jobs

Это парсер

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Поиск работы на hh.ru</title>
    <style>
        section{
            display: grid;
            gap: 20px;
            grid-template-columns: repeat(2, 1fr);
        }
    </style>
</head>
<body>
    <h1>Результаты поиска</h1>
    <h3>Найдено {{resultsNumber}} результатов по запросу: {{searchBy}}</h3>
    <section>
        <h4>Название вакансии</h4>
        <h4>Ссылка</h4>
        {% for job in jobs %}
           <span>{{job.title}}</span>
           <a href="{{job.link}}" target="_blank">Перейти</a>
        {% endfor %}
    </section>
</body>
</html>

Код страницы


Ответы (1 шт):

Автор решения: miha_tormoz

Поменял значения Название и Ссылка. Всё заработало. Было:

def extract_job(html):
    title = html.find('a').text
    link = html.find('a')['href']
    # location = html.find('div', {'data-qa': 'vacancy-serp__vacancy-address'})
    return {
        'Название вакансии': title,
        'Ссылка': link
    }

Стало:

def extract_job(html):
    title = html.find('a').text
    link = html.find('a')['href']
    # location = html.find('div', {'data-qa': 'vacancy-serp__vacancy-address'})
    return {
        'title': title,
        'link': link
    }
→ Ссылка