파 이 썬 3 (11) 원생 파충류
1. 원리: 텍스트 분석 및 정보 추출 - 정규 표현 식.
2. 인 스 턴 스 목적: 판다 TV 의 한 분류 아래 앵 커 의 인기 순위
사이트 구조 분석
동작: F12 HTML 정보 보기, Ctrl + Shift + C 마우스 선택 후 해당 하 는 HTML 을 찾 습 니 다.
3. 절차:
전주:
1. 명확 한 목적 (캡 처 목적 분석 캡 처 페이지 확인)
2. 데이터 대응 페이지 찾기
3. 웹 페이지 의 구 조 를 분석 하고 데이터 가 있 는 라벨 의 위 치 를 찾 습 니 다.
실행:
4. HTTP 요청 을 시 뮬 레이 션 하여 서버 에 요청 을 보 내 고 서버 에서 우리 에 게 돌아 오 는 HTML 을 가 져 옵 니 다.
5. 정규 표현 식 으로 우리 가 원 하 는 데 이 터 를 추출 합 니 다.
......
4. 코드
둘. VSCode 디 버 깅 코드
인 터 럽 트 디 버 깅: F5 시작, F10 단일 단계, F5 인 터 럽 트, F11 내부 진입
3. HTML 구조 분석 기본 원칙
캡 처 할 정 보 를 찾 을 수 있 도록 탭, 식별 자 를 찾 습 니 다.
1. 유일 성 을 가 진 라벨 선택
2. 데이터 에 가장 가 까 운 라벨 을 선택 합 니 다.
4. 데이터 추출 등급 분석 및 원칙
1. 두 데 이 터 를 한 그룹의 데이터 로 보고 탭 을 다시 찾 을 수 있 습 니 다.
2. 닫 을 수 있 는 탭 (부모 탭) 을 선택 하고 필요 한 데 이 터 를 감 싸 줍 니 다.
5. 정규 분석 HTML 및 구체 적 절차
'''
This is a spider,
'''
from urllib import request
import re
class Spider():
'''
This is a spider class
'''
url = 'https://www.panda.tv/cate/lol'
root_pattern = '([\s\S]*?)' #
#[\w\W] [\s\S] .
#* 0
#? ,
name_pattern = '([\s\S]*?)'number_pattern = '([\s\S]*?)'
def __fetch_content(self):
'''
개인 적 인 방법, 웹 페이지 내용 가 져 오기
'''
r = request.urlopen(Spider.url)
htmls = r.read()
htmls = str(htmls,encoding = 'utf-8')
return htmls
def __analysis(self,htmls):
'''
정규 표현 식 으로 데 이 터 를 추출 합 니 다.
'''
root_html = re.findall(Spider.root_pattern,htmls)
anchors = []
for html in root_html:
name = re.findall(Spider.name_pattern,html)
number = re.findall(Spider.number_pattern,html)
anchor = {'name':name,'number':number}
anchors.append(anchor)
return anchors
def __refine(self,anchors):
l = lambda anchor:{
'name':anchor['name'][0].strip(),
'number ': anchor [' number '] [0] \ # 목록 이 단일 문자열 로 바 뀌 었 습 니 다.
}
return map(l,anchors)
def __sort_seed(self,anchor):
r = re. findall ('\ d *', anchor ['number']) \ # 숫자 추출
number = float(r[0])
if '만' in anchor ['number']: \ # 처리 '만'
number *= 10000
return number
def __sort(self,anchors):
'''
key 비교 대상 확인
sorted () 기본 오름차 순 정렬, reverse = True 내림차 순
str 로 정렬 할 수 없고 int 로 '만' 을 처리 해 야 합 니 다.
'''
anchors = sorted(anchors,key = self.__sort_seed,reverse = True)
return anchors
def __show(self,anchors):
for rank in range(0,len(anchors)):
print('rank ' + str(rank + 1) +
':' + ' ' + anchors[rank]['name'] +
'————' + anchors[rank]['number'])
def go (self): \ # Spider 의 입구 방법
htmls = self.__fetch_content()
anchors = self.__analysis(htmls)
anchors = list(self.__refine(anchors))
anchors = self.__sort(anchors)
self.__show(anchors)
spider = Spider()
spider.go()
파충류 의 틀:
Beautiful Soup
Scrapy
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.