입문 급 python 파충류 튜 토리 얼 상세 설명

머리말
본 고의 목적:본인 의 습관 과 이해 에 따라 가장 간결 한 표현 으로 파충류 의 정의,구성 부분,기어 오 르 기 절 차 를 소개 하고 예시 코드 를 설명 한다.
기초
파충류 의 정의:인터넷 콘 텐 츠(대부분 웹 페이지)를 캡 처 하고 자동화 데이터 처 리 를 하 는 프로그램.주로 느슨 한 대량의 정 보 를 수집 하고 구조 화 처리 하여 데이터 분석 과 발굴 에 원자 재 를 제공한다.
오늘 t 조 는 거대 한 파충류 다.
파충 류 는 URL 라 이브 러 리,수집 기,해석 기로 이 루어 져 있다.
흐름
기어 오 르 려 는 url 라 이브 러 리 가 비어 있 지 않 으 면 수집 기 는 관련 내용 을 자동 으로 기어 오 르 고 그 결 과 를 해상도 기,해상도 기 에서 대상 내용 을 추출 한 후 파일 을 쓰 거나 입고 하 는 등 작업 을 합 니 다.
在这里插入图片描述
코드
STEP 1:수집 기 쓰기
다음은 비교적 간단 한 수집 기 함수 입 니 다.requests 라 이브 러 리 가 필요 합 니 다.
우선 http 의 header 를 구성 합 니 다.브 라 우 저 와 운영 체제 등 정보 가 있 습 니 다.이 위 조 된 헤더 가 없 으 면 대상 사이트 의 WAF 등 보호 장치 에 의 해 기계 코드 로 인식 되 어 해 소 될 수 있다.
그리고 requests 라 이브 러 리 의 get 방법 으로 url 내용 을 가 져 옵 니 다.http 응답 코드 가 200 ok 이면 페이지 접근 이 정상 적 임 을 설명 하고 이 함수 반환 값 을 텍스트 형식의 html 코드 내용 으로 설정 합 니 다.
응답 코드 가 200 ok 이 아니라면 페이지 가 정상적으로 접근 할 수 없 음 을 설명 하고 함수 반환 값 을 특수 문자열 이나 코드 로 설정 합 니 다.

import requests

def get_page(url):
	headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
	response = requests.get(url, headers= headers)
	if response.status_code == 200:
	  return response.text
	else:
		return 'GET HTML ERROR !'
두 번 째 단계:해석 기
해상도 기 는 수집 기 가 되 돌아 오 는 html 코드 를 필터 링 하여 필요 한 내용 을 추출 하 는 역할 을 합 니 다.
14 년 간 의 충실 한 사용자 로 서 당연히 콩잎 으로 밤 을 들 어야 한다
우 리 는 콩짜개 랭 킹 TOP 250 영화 의 8 가지 인 자 를 얻 을 계획 이다.순위,영화 url 링크,영화 이름,감독,상영 년도,국가,영화 유형,평 점 이다.사전 으로 정리 하고 텍스트 파일 에 쓰기.
기어 오 르 려 는 페이지 는 다음 과 같 습 니 다.각 페이지 는 25 편의 영 화 를 포함 하여 모두 10 페이지 입 니 다.
在这里插入图片描述
여기 서 반드시 콩잎 의 전단 엔지니어 들 을 칭찬 해 야 한다.html 라벨 의 레이아웃 은 매우 정연 하고 차원 이 있어 정보 추출 에 매우 편리 하 다.
다음은'쇼 신 크 의 구원'에 대응 하 는 html 코드 입 니 다.(추출 해 야 할 8 개의 매개 변 수 는 빨 간 선 으로 표시 합 니 다)
在这里插入图片描述
위의 html 에 따라 해석 기 함 수 를 작성 하여 8 개의 필드 를 추출 합 니 다.이 함수 반환 값 은 교체 가능 한 시퀀스 입 니 다.
나 는 개인 적 으로 re(정규 표현 식)로 내용 을 추출 하 는 것 을 좋아한다.8 개(.*?)추출 할 필드 에 각각 대응 합 니 다.

import re

def parse_page(html):
	pattern = re.compile('<em class="">(.*?)</em>.*?<a href="(.*?)" rel="external nofollow" rel="external nofollow" >.*?<span class="title">(.*?)</span>.*?<div class="bd">.*?<p class="">(.*?)&nbsp.*?<br>(.*?)&nbsp;/&nbsp;(.*?)&nbsp;/&nbsp;(.*?)</p>.*?<span class="rating_num".*?"v:average">(.*?)</span>' , re.S)
	items = re.findall(pattern , html)
	for item in items:
		yield {
		  'rank': item[0],
		  'href': item[1],
		  'name': item[2],
		  'director': item[3].strip()[4:],
		  'year': item[4].strip(),
		  'country': item[5].strip(),
		  'style': item[6].strip(),
		  'score': item[7].strip()
		}
추출 한 내용 은 다음 과 같 습 니 다.
在这里插入图片描述
완전한 코드 로 정리 하기:(잘못 사용 하 는 것 은 잠시 고려 하지 않 음)

import requests
import re
import json

def get_page(url):
	#     
	headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
	response = requests.get(url, headers= headers)
	if response.status_code == 200:
	  return response.text
	else:
		return 'GET HTML ERROR ! '


def parse_page(html):
	#     
	pattern = re.compile('<em class="">(.*?)</em>.*?<a href="(.*?)" rel="external nofollow" rel="external nofollow" >.*?<span class="title">(.*?)</span>.*?<div class="bd">.*?<p class="">(.*?)&nbsp.*?<br>(.*?)&nbsp;/&nbsp;(.*?)&nbsp;/&nbsp;(.*?)</p>.*?<span class="rating_num".*?"v:average">(.*?)</span>' , re.S)
	items = re.findall(pattern , html)
	for item in items:
		yield {
		  'rank': item[0],
		  'href': item[1],
		  'name': item[2],
		  'director': item[3].strip()[4:],
		  'year': item[4].strip(),
		  'country': item[5].strip(),
		  'style': item[6].strip(),
		  'score': item[7].strip()
		}


def write_to_file(content):
	#      
	with open('result.txt' , 'a' , encoding = 'utf-8') as file:
		file.write(json.dumps(content , ensure_ascii = False) + '
') if __name__== "__main__": # for i in range(10): url= 'https://movie.douban.com/top250?start='+ str(i*25)+ '&filter' for res in parse_page(get_page(url)): write_to_file(res)
매우 간결 하고 python 의 간단 하고 효율 적 인 특징 에 매우 부합된다.
설명:
기다 리 는 url 의 규칙 을 파악 해 야 for 순환 등 조작 자동화 처 리 를 이용 할 수 있다.
앞의 25 편 영화 의 url 은?https://movie.douban.com/top250?start=0&filter,26-50 번 째 영화 url 은?https://movie.douban.com/top250?start=25&filter。규칙 은 start 매개 변수 에 있 습 니 다.start 를 0,25,50,75 로 순서대로 설정 합 니 다.225,모든 페이지 의 링크 를 가 져 올 수 있 습 니 다.parse_page 함수 의 반환 값 은 교체 가능 한 시퀀스 로 사전 의 집합 으로 이해 할 수 있 습 니 다.실행 이 완료 되면 프로그램 과 디 렉 터 리 에 result.txt 파일 을 생 성 합 니 다.내용 은 다음 과 같다.
在这里插入图片描述  
입문 급 python 파충류 튜 토리 얼 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 python 파충류 입문 튜 토리 얼 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기