파 이 썬 파충류 의 작은 예-51job 가 발표 한 일자 리 를 얻 었 다.

개술
언제 부터 파 이 썬 과 파충 류 는 첫사랑 처럼 정 이 깊 어 졌 는 지 모 르 겠 습 니 다.많은 친구 들 이 파 이 썬 을 배 웠 다 고 믿 습 니 다.파충 류 를 배 웠 기 때 문 입 니 다.그 이 유 는 두 가지 가 있 습 니 다.하 나 는 파 이 썬 이 파충류 에 대한 지지 도가 좋 고 라 이브 러 리 가 많 습 니 다.둘째,Pyhton 의 문법 은 간단 하고 입문 이 쉽다.그래서 두 가 지 는 서로 따라 다 니 며 버 리 지 않 습 니 다.본 고 는 주로 간단 한 작은 예 로 Python 이 파충류 분야 에서 의 간단 한 응용 을 약술 하고 학습 공유 에 만 사용 할 수 있 습 니 다.부족 한 점 이 있 으 면 지적 해 주 십시오.
지식 에 관련되다
본 사례 는 주로 51job 가 발표 한 일자 리 를 얻 는데 사용 하 는 지식 은 다음 과 같다.
  • 개발 환경 및 도구:주로 Python 3.7 을 사용 하고 IDE 는 PyCharm
  • requests 라 이브 러 리:이 라 이브 러 리 는 python 의 내장 모듈 을 봉 하여 네트워크 의 요청 과 데 이 터 를 가 져 오 는 데 사용 되 며 다양한 형식의 요청 을 지원 할 수 있 습 니 다.
  • BeautifulSoup 라 이브 러 리:Html,Xml,JSon 등 다양한 형식 으로 가 져 온 데 이 터 를 분석 하 는 데 사 용 됩 니 다.
  • 데이터 지속 화:주로 메모리 에 있 는 데 이 터 를 데이터베이스 나 파일 에 저장 합 니 다.
  • 파충류 의 기본 절차
    파충류 의 기본 절 차 는 다음 그림 과 같다.

    목 표를 달성 하 다.
    관련 내용 을 얻 으 려 면 먼저 기어 오 르 는 목 표를 분석 하고 목록 구 조 를 파악 해 야 분석 할 수 있다.이 예 는 주로 51job 의 작업 목록 을 기어 오 르 는데 다음 과 같다.

    핵심 소스 코드
    1.데이터 가 져 오기
    함수 get 정의data,요청 을 하고 데 이 터 를 가 져 오 는 데 사 용 됩 니 다.다음 과 같 습 니 다.
    headers 의 User-agent 는 주로 브 라 우 저 를 모 의 하 는 데 사 용 됩 니 다.그렇지 않 으 면 파충류 프로그램 에 의 해 차단 되 고 http 상태 코드 는 418 입 니 다.사이트 의 기어 오 르 기 프로그램 에 의 해 되 돌아 온 다 는 뜻 입 니 다.
    encoding 은 오 르 려 는 사이트 의 인 코딩 은 gbk 입 니 다.추가 하지 않 으 면 오류 가 발생 할 수 있 습 니 다.기본 값 은 utf-8 입 니 다.
    
    def get_data(req_url):
      """    """
      headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko',
        'Accept-Language': 'zh-Hans-CN, zh-Hans;q=0.5'
      }
      resp = requests.get(req_url, headers=headers)
      resp.encoding = 'gbk' #          
      if resp.status_code == 200:
        return resp.text
      else:
        return None
    2.데이터 분석
    함수 parse 정의data,가 져 온 내용 을 분석 하 는 데 사 용 됩 니 다.다음 과 같 습 니 다.
    BeautifulSoup 을 사용 하여 되 돌아 오 는 텍스트 를 html 대상 으로 해석 하고 해당 하 는 내용 을 가 져 옵 니 다.이 예 는 주로 작업 목록 을 가 져 옵 니 다.
    
    def parse_data(resp_html):
      """    ,     """
      soup = BeautifulSoup(resp_html, features='html.parser')
      job_table = soup.find('div', attrs={'class': 'dw_table'})
      # print(job_table)
      job_list = job_table.find_all('div', attrs={'class': 'el'})
      # print(job_list)
      #     ,     title     
      res_list = []
      for job in job_list[1: -1]:
        job_name = job.find('p', attrs={'class': "t1"}).find('span').find('a').get_text()
        job_name = job_name.replace('\r
    ', '').strip() job_company = job.find('span', attrs={'class': "t2"}).find('a').get_text() job_addr = job.find('span', attrs={'class': "t3"}).get_text() job_salary = job.find('span', attrs={'class': "t4"}).get_text() job_time = job.find('span', attrs={'class': "t5"}).get_text() # print(' :', job_name, '---', job_company, '---', job_addr, '---', job_salary, '---', job_time) res_item = { ' ': job_name, ' ': job_company, ' ': job_addr, ' ': job_salary, ' ': job_time } res_list.append(res_item) return res_list
    3.데이터 저장
    함수 save 정의data,가 져 온 내용 을 json 파일 에 저장 하 는 데 사용 합 니 다.다음 과 같 습 니 다.
    with 함 수 는 자동 으로 방출 할 수 있 습 니 다.중국어 가 포함 되 어 있 기 때문에 json 파일 의 인 코딩 은 utf-8 입 니 다.그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.
    
     def save_data(res_list):
       """    """
       with open('jobs.json', 'w', encoding='utf-8') as f:
         res_list_json = json.dumps(res_list, ensure_ascii=False)
         f.write(res_list_json)
    4.전체 호출 절차
    정 의 된 세 개의 함 수 를 순서대로 호출 합 니 다.다음 과 같 습 니 다.
    
    if __name__ == '__main__':
      """          """
      req_url = 'https://search.51job.com/list/040000,000000,0000,00,9,99,java,2,1.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
      #     
      resp_html = get_data(req_url)
      # print(html)
      #     
      res_list = parse_data(resp_html)
      #     
      save_data(res_list)
    결과 보기
    기어 오 른 결 과 는 jobs.json 파일 에 저 장 됩 니 다.다음 과 같 습 니 다.
    
    [
     {
      "    ": "Java   ",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "1.8-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java    6k ",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "6-8 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java   6k ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "6-8 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "1.5-1.7 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "1.3-1.7 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java    ",
      "  ": "               ",
      "    ": "  -    ",
      "    ": "1-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "  JAVA",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "1.5-2.1 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "           ",
      "    ": "  -    ",
      "    ": "2-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "         (  )   ...",
      "    ": "  ",
      "    ": "1.5-2.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "1.2-1.8 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "1.5-2 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "1.5-2 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "             ",
      "    ": "  -    ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "java       ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "0.8-1.1 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     -2020    ",
      "  ": "    (  )    ",
      "    ": "  -   ",
      "    ": "0.8-1.6 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "2.5-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA       ",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "2-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA        ",
      "  ": "          ",
      "    ": "  -   ",
      "    ": "1.5-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA     (     )",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "0.8-1 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "             ",
      "    ": "  ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "0.8-1 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA      ",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "1.8-3 / ",
      "    ": "06-13"
     },
     {
      "    ": "Saas     (Java  )",
      "  ": "               ",
      "    ": "  -   ",
      "    ": "1.7-2.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "    ",
      "    ": "  -   ",
      "    ": "6-9 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "2-4 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java        ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "1-3.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "   java   ",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "1.3-1.8 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "      (  )    ",
      "    ": "  -   ",
      "    ": "0.6-1 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "  JAVA(J13824)",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "java   ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "0.8-1.6 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA        ",
      "  ": "      (  )    ",
      "    ": "  -   ",
      "    ": "1.5-2 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       (  )",
      "  ": "                ...",
      "    ": "  ",
      "    ": "2-4 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA   ",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "0.8-1.2 / ",
      "    ": "06-13"
     },
     {
      "    ": "    Leader(JAVA  )",
      "  ": "             ",
      "    ": "  -   ",
      "    ": "3-4 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "                ...",
      "    ": "  -   ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "             ",
      "    ": "  -    ",
      "    ": "0.9-1.8 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java(     )",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "1.8-2.2 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "1.5-2 / ",
      "    ": "06-13"
     },
     {
      "    ": "  /  Java   ",
      "  ": "    (  )    ",
      "    ": "  -   ",
      "    ": "3-4 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "0.8-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java       ",
      "  ": "               ",
      "    ": "  -   ",
      "    ": "1.5-1.8 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA(  、  )",
      "  ": "           ",
      "    ": "  -   ",
      "    ": "2.2-3.2 / ",
      "    ": "06-13"
     },
     {
      "    ": "JAVA     ",
      "  ": "              ",
      "    ": "  -   ",
      "    ": "1-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "java   ",
      "  ": "             ",
      "    ": "  ",
      "    ": "1.5-1.8 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "    Z      ",
      "    ": "  -   ",
      "    ": "0.9-1.5 / ",
      "    ": "06-13"
     },
     {
      "    ": "Java     ",
      "  ": "            ",
      "    ": "  -   ",
      "    ": "1.4-1.9 / ",
      "    ": "06-13"
     }
    ]
    한층 더 생각 하 다
    이 예 는 공간 을 더욱 최적화 시 킬 수 있다.다음 과 같다.
  • 이번 파충 류 는 한 번 에 기어 오 르 는 것 으로 데이터 의 양 이 상대 적 으로 적 으 며,대량의 데 이 터 를 기어 오 르 려 면 다 중 스 레 드 에 관 한 지식 을 사용 해 야 한다.
  • 기본 적 인 파충 류 는 정적 렌 더 링 내용 만 기어 올 라 갈 수 있 습 니 다.비동기 동적 렌 더 링 데이터 라면 어떻게 기어 올 라 갑 니까?
  • 기어 오 른 결 과 를 데이터베이스 에 저장 하면 어떻게 조작 합 니까?
  • 이상 은 파 이 썬 파충류 의 작은 예 입 니 다.51job 가 발표 한 일자 리 를 얻 는 상세 한 내용 입 니 다.파 이 썬 파충류 가 일자 리 를 얻 는 것 에 관 한 자 료 는 우리 의 다른 관련 글 에 주목 하 세 요!

    좋은 웹페이지 즐겨찾기