간단 한 python 파충류 프로그램

개술
이것 은 간단 한 python 파충류 프로그램 으로 기술 학습 과 교류 에 만 사용 되 는데 주로 간단 한 실제 사례 를 통 해 인터넷 파충류 에 대한 기본 적 인 인식 을 가진다.
인터넷 파충류
쉽게 말 하면 인터넷 파충 류 는 사람 이 웹 사이트 에 방문 하 는 행 위 를 모 의하여 가치 있 는 데 이 터 를 얻 는 것 이다.바 이 두 백과
파충류 의 수 요 를 분석 하 다.
목 표를 확정 하 다
콩짜개 열기 가 Top 100 이내 인 영화 의 일부 정 보 를 얻 는 것 은 영화 의 명칭,콩짜개 평 점,감독,작가,주연,유형,제작 국가/지역,언어,상영 날짜,영화 의 길이,IMDb 링크 등 정 보 를 포함한다.
목 표를 분석 하 다
1.도 구 를 이용 하여 목표 웹 페이지 분석
우선,우 리 는 콩짜개 영 화·인기 영 화 를 열 면 모두 20 편의 영 화 를 발견 할 수 있 지만,페이지 소스 코드 를 볼 때 소스 코드 에서 이 영화 들 을 정보 로 찾 을 수 없다.왜 그 럴 까요?원래 콩잎 은 ajax 기술 을 통 해 영화 정 보 를 얻 고 데 이 터 를 페이지 에 동적 으로 불 러 옵 니 다.크롬 개발 자 도 구 를 이용 해 영화 정 보 를 얻 을 API 를 먼저 찾 아야 한다.

그리고 영화 상세 페이지 를 분석 합 니 다.

사고 분석.

구체 적 실현
개발 환경
python3.6
pycharm
주 의존 라 이브 러 리
urllib-기본 적 인 네트워크 관련 조작
lxml--xpath 문법 으로 HTML 페이지 해석
json--API 를 통 해 얻 은 JSON 데이터 조작
re--정규 조작
코드 구현

from urllib import request
from lxml import etree
import json
import re
import ssl


#         
ssl._create_default_https_context = ssl._create_unverified_context


def get_headers():
  """
         
  :return:
  """
  headers = {
    'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) "
           "AppleWebKit/537.36 (KHTML, like Gecko) "
           "Chrome/65.0.3325.181 Safari/537.36"
  }
  return headers


def get_url_content(url):
  """
      url     
  :param url:
  :return:
  """
  content = ''
  headers = get_headers()
  res = request.Request(url, headers=headers)
  try:
    resp = request.urlopen(res, timeout=10)
    content = resp.read().decode('utf-8')
  except Exception as e:
    print('exception: %s' % e)
  return content


def parse_content(content):
  """
      
  :param content:
  :return:
  """
  movie = {}
  html = etree.HTML(content)
  try:
    info = html.xpath("//div[@id='info']")[0]
    movie['director'] = info.xpath("./span[1]/span[2]/a/text()")[0]
    movie['screenwriter'] = info.xpath("./span[2]/span[2]/a/text()")[0]
    movie['actors'] = '/'.join(info.xpath("./span[3]/span[2]/a/text()"))
    movie['type'] = '/'.join(info.xpath("./span[@property='v:genre']/"
                      "text()"))
    movie['initialReleaseDate'] = '/'.\
      join(info.xpath(".//span[@property='v:initialReleaseDate']/text()"))
    movie['runtime'] = \
      info.xpath(".//span[@property='v:runtime']/text()")[0]

    def str_strip(s):
      return s.strip()

    def re_parse(key, regex):
      ret = re.search(regex, content)
      movie[key] = str_strip(ret[1]) if ret else ''

    re_parse('region', r'<span class="pl">    /  :</span>(.*?)<br/>')
    re_parse('language', r'<span class="pl">  :</span>(.*?)<br/>')
    re_parse('imdb', r'<span class="pl">IMDb  :</span> <a href="(.*?)" rel="external nofollow" '
             r'target="_blank" >')
  except Exception as e:
    print('    : %s' % e)
  return movie


def spider():
  """
       100     
  :return:
  """
  recommend_moives = []
  movie_api = 'https://movie.douban.com/j/search_subjects?' \
        'type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend' \
        '&page_limit=100&page_start=0'
  content = get_url_content(movie_api)
  json_dict = json.loads(content)
  subjects = json_dict['subjects']
  for subject in subjects:
    content = get_url_content(subject['url'])
    movie = parse_content(content)
    movie['title'] = subject['title']
    movie['rate'] = subject['rate']
    recommend_moives.append(movie)
    print(len(recommend_moives))
  print(recommend_moives)


if __name__ == '__main__':
  spider()
효과.
 
총결산
본 고 는 파충류 가 수요->분석->실현 하 는 과정 을 상세히 논술 하고 구체 적 인 코드 실현 을 제시 했다.본 논문 에 대한 학습 을 통 해 우 리 는 인터넷 파충류 의 기본 적 인 지식 과 python 의 기본 라 이브 러 리 사용 방법 을 알 수 있다.그 다음 에 저 는 고급 네트워크 작업 과 관련 된 라 이브 러 리 와 잡 은 데 이 터 를 저장 하 는 방식 으로 python 네트워크 파충 류 를 더욱 깊이 이해 할 것 입 니 다.
특별 성명
1.본 고 에서 언급 한 두 판 망 은 국내 유명 사이트 이 므 로 권리 침해 가 있 으 면 알려 주 십시오.
2.본 고 는 작가 가 창작 한 것 이 므 로 전재 할 때 출처 를 밝 혀 주 십시오.허락 없 이 는 상업 용도 로 사용 할 수 없다.
3.본 고 는 인터넷 파충류 기술 학습 교류 에 만 사용 되 고 독자 가 관련 된 모든 권리 침해 문 제 는 본 고의 작가 와 무관 하 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기