입문 급 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="">(.*?) .*?<br>(.*?) / (.*?) / (.*?)</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="">(.*?) .*?<br>(.*?) / (.*?) / (.*?)</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 파충류 입문 튜 토리 얼 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.