>백엔드 개발 >파이썬 튜토리얼 >Python을 사용하여 구직 웹사이트 정보 얻기

Python을 사용하여 구직 웹사이트 정보 얻기

高洛峰
高洛峰원래의
2017-03-19 14:05:292078검색

이 기사에서는 Python을 사용하여 구직 사이트 정보를 캡처하는 방법을 소개합니다

이번에 캡처된 정보는 Zhaopin 채용 사이트에서 "데이터 분석가"를 검색한 후의 정보입니다.

python 버전: python3.5.

제가 주로 사용하는 패키지는 Beautifulsoup + Requests+csv입니다

추가적으로 모집 내용에 대한 간략한 설명도 함께 가져왔습니다.

파일을 csv 파일로 출력한 후 엑셀로 열었을 때 문자 깨짐 현상이 있는 것을 발견했으나, 파일 소프트웨어(예: 메모장++).

엑셀에서 열었을 때 제대로 표시되도록 pandas를 이용하여 다음과 같이 변환하고 위의 컬럼명을 추가했습니다. 변환이 완료되면 올바르게 표시될 수 있습니다. pandas로의 변환에 대해서는 제 블로그

를 참고하시면 됩니다. 채용 내용에 대한 설명이 많기 때문에 마지막으로 csv 파일을 엑셀 파일로 저장하고 보기 쉽도록 형식을 조정하세요.

최종 효과는 다음과 같습니다. Python을 사용하여 구직 웹사이트 정보 얻기

구현 코드는 다음과 같습니다. 정보 크롤링을 위한 코드는 다음과 같습니다.

# Code based on Python 3.x
# _*_ coding: utf-8 _*_
# __Author: "LEMON"


from bs4 import BeautifulSoup
import requests
import csv


def download(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}
    req = requests.get(url, headers=headers)
    return req.text


def get_content(html):
    soup = BeautifulSoup(html, 'lxml')
    body = soup.body
    data_main = body.find('div', {'class': 'newlist_list_content'})
    tables = data_main.find_all('table')

    zw_list = []
    for i,table in enumerate(tables):
        if i == 0:
            continue
        temp = []
        tds = table.find('tr').find_all('td')
        zwmc = tds[0].find('a').get_text()
        zw_link = tds[0].find('a').get('href')
        fkl = tds[1].find('span').get_text()
        gsmc = tds[2].find('a').get_text()
        zwyx = tds[3].get_text()
        gzdd = tds[4].get_text()
        gbsj = tds[5].find('span').get_text()

        tr_brief = table.find('tr', {'class': 'newlist_tr_detail'})
        brief = tr_brief.find('li', {'class': 'newlist_deatil_last'}).get_text()

        temp.append(zwmc)
        temp.append(fkl)
        temp.append(gsmc)
        temp.append(zwyx)
        temp.append(gzdd)
        temp.append(gbsj)
        temp.append(brief)
        temp.append(zw_link)

        zw_list.append(temp)
    return zw_list


def write_data(data, name):
    filename = name
    with open(filename, 'a', newline='', encoding='utf-8') as f:
        f_csv = csv.writer(f)
        f_csv.writerows(data)

if __name__ == '__main__':

    basic_url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%85%A8%E5%9B%BD&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&sm=0&p='

    number_list = list(range(90)) # total number of page is 90
    for number in number_list:
        num = number + 1
        url = basic_url + str(num)
        filename = 'zhilian_DA.csv'
        html = download(url)
        # print(html)
        data = get_content(html)
        # print(data)
        print('start saving page:', num)
        write_data(data, filename)

사용 Pandas 변환 코드는 다음과 같습니다.

# Code based on Python 3.x
# _*_ coding: utf-8 _*_
# __Author: "LEMON"

import pandas as pd

df = pd.read_csv('zhilian_DA.csv', header=None)


df.columns = ['职位名称', '反馈率', '公司名称', '月薪', '工作地点',
           '发布日期', '招聘简介', '网页链接']

# 将调整后的dataframe文件输出到新的csv文件
df.to_csv('zhilian_DA_update.csv', index=False)


위 내용은 Python을 사용하여 구직 웹사이트 정보 얻기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.