Вы можете выполнить код, нажав кнопку Выполнить в верхней части этой страницы и выбрав Выполнить на Binder. Вы можете внести изменения и сохранить собственную версию блокнота в Jovian, выполнив следующие ячейки:

!pip install jovian --upgrade --quiet
import jovian
# Execute this to save new versions of the notebook
jovian.commit(project="web-scrapping-project")
<IPython.core.display.Javascript object>


[jovian] Updating notebook "pamyaola/web-scrapping-project" on https://jovian.com
[jovian] Committed successfully! https://jovian.com/pamyaola/web-scrapping-project





'https://jovian.com/pamyaola/web-scrapping-project'

Установите и импортируйте необходимые библиотеки

!pip install requests --upgrade --quiet
!pip install beautifulsoup4 --upgrade --quiet
import requests
from bs4 import BeautifulSoup

Используйте библиотеку requests для загрузки веб-страниц

  • Проверьте исходный HTML-код веб-сайта и определите правильные URL-адреса для загрузки.
  • Загрузите и сохраните веб-страницы локально, используя библиотеку запросов.
  • Создайте функцию для автоматизации загрузки по разным темам/поисковым запросам.

Используйте BeautifulSoup для разбора

  • Разбирайте и исследуйте структуру загруженных веб-страниц с помощью Beautiful Soup.
#function to get all tags of all the jobs
def get_job_page(topic):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 YaBrowser/19.6.1.153 Yowser/2.5 Safari/537.36'}
    base_url = 'https://www.quikr.com/jobs/' + topic + '+zwqxj1466534506'
#  The contents of the web page can be accessed using the .text property of the response.     
    response = requests.get(base_url, headers=headers)
    if not response.ok:
        print('status :', response.status_code)
        raise Exception('page not found: '+base_url)
    doc = BeautifulSoup(response.text)
    div_tags =  doc.find_all('div',class_='job-card apply-block adImpression-click-event adImpression-event-class1')
    
    return div_tags
all_div_tags = [get_job_page(job) for job in job_posts]

Доступ к заданиям

Каждое задание связано с <div_tags> с class_name ="job-card apply-block adImpression-click-event adImpression-event-class1", как показано на изображении ниже.

Используйте Beautiful Soup для извлечения информации

  • Используйте правильные свойства и методы для извлечения необходимой информации.
  • Создайте функции для извлечения со страницы в списки и словари.
#function to get all data from all the jobs tags
def parse_data(article):
    a_job_title = article.find('a',class_='job-title')
    monthly_income = article.find('div',class_='perposelSalary attributeVal')
    Job_Type_tags = article.find('div',class_='m-salary col-lg-3 col-md-6 col-xs-6 nopadding')
    Job_Type = Job_Type_tags.find('div',class_='attributeVal')
    Company_tags = article.find_all('div',class_='salary col-lg-3 col-md-6 col-xs-6 nopadding')
    Company_tag = Company_tags[1].find('div',class_='inlineBlock mlAuto attributeSection')
    Company = Company_tag.find_all('div')
    Experience_tags = article.find('div',class_='lstExperience col-lg-3 col-md-6 col-xs-6 nopadding')
    Experience_tag = Experience_tags.find('div',class_='inlineBlock lineH mlAuto')
    Experience = Experience_tag.find_all('div')
    city_tag = article.find('span',class_='city')
    city = city_tag.find('b')
    
    job_dict = {
        'job_title':a_job_title.text.replace(',',' '),
        'monthly_income':monthly_income.text.replace(',',''),
        'Job_Type':Job_Type.text,
        'Company':Company[1].text,
        'Experience':Experience[1].text,
        'city':city.text
    }
    
    return job_dict
all_jobs_done = []
for all_tg in all_div_tags:
    list_of_dict = [parse_data(tg) for tg in all_tg]
    all_jobs_done = all_jobs_done + list_of_dict
len(all_jobs_done)
122

Создайте файл(ы) CSV с извлеченной информацией

  • Создайте функции для сквозного процесса загрузки, анализа и сохранения файлов CSV.
  • Выполните функцию с различными входными данными, чтобы создать набор данных файлов CSV.
  • Прикрепите файлы CSV к своей записной книжке, используя jovian.commit.
def write_csv(items, path):
    # Open the file in write mode
    with open(path, 'w') as f:
        # Return if there's nothing to write
        if len(items) == 0:
            return
        
        # Write the headers in the first line
        headers = list(items[0].keys())
        f.write(','.join(headers) + '\n')
        
        # Write one item per line
        for item in items:
            values = []
            for header in headers:
                values.append(str(item.get(header, "")))
            f.write(','.join(values) + "\n")
write_csv(all_jobs_done , 'jobs.csv')

Чтение CSV file и создание фрейма данных с использованием библиотеки Pandas

!pip install pandas --upgrade --quiet
import pandas as pd
jobs_df = pd.read_csv("jobs.csv")
jobs_df

jovian.commit(files=['jobs.csv'])
<IPython.core.display.Javascript object>


[jovian] Updating notebook "pamyaola/web-scrapping-project" on https://jovian.com
[jovian] Uploading additional files...
[jovian] Committed successfully! https://jovian.com/pamyaola/web-scrapping-project





'https://jovian.com/pamyaola/web-scrapping-project'

Краткое содержание

вот что мы рассмотрели в этом проекте:

  • Загрузите веб-страницу с помощью запросов
  • Разберите исходный код HTML, используя красивый суп
  • Извлечь job_title, ежемесячный доход, тип работы, компанию, опыт, город со страницы
  • Компиляция извлеченной информации в списки и словари Python
  • Извлечение и объединение данных с нескольких страниц
  • Сохраните извлеченную информацию в файл CSV.
  • Прочитайте файл CSV как фрейм данных panda.

Будущая работа

  • Мы можем анализировать данные, чтобы получить самые требовательные рабочие места в настоящее время
  • Мы можем очистить страницу вакансий, чтобы получить дополнительную информацию о различных вакансиях.
  • Рекомендация кандидатам подходящей работы в соответствии с минимальными навыками, которые они приобретают.

Рекомендации