scrapy+flask+html 검색엔진 만 들 기 예시 코드

1.예비 지식
python 언어,scrapy 파충류 기초,json 모듈,flask 백 엔 드
2.CSDN 데이터 인터페이스 캡 처
구 글 패키지 도구 로 CSDN 검색엔진 의 인 터 페 이 스 를 캡 처 합 니 다.
2.1 CSDN 검색엔진 홈 페이지 보기
CSDN 검색엔진 홈 페이지 보기https://so.csdn.net/,다음 과 같이 캡 처:
在这里插入图片描述
2.2 CSDN 검색엔진 의 기능 테스트
CSDN 검색엔진 의 기능 을 테스트 하고 인 자 를 입력 한 후 되 돌아 오 는 글 정보 목록 을 확인 합 니 다.테스트 는 다음 과 같 습 니 다.
在这里插入图片描述
테스트 를 통 해 CSDN 검색엔진 의 주요 기능 은 python 과 관련 된 모든 글 을 검색 한 다음 글 의 열,좋아요,댓 글 수 에 따라 종합 적 으로 정렬 하여 사용자 에 게 정렬 된 글 결 과 를 보 여 주 는 것 으로 나 타 났 다.이렇게 말 하면 우리 의 주요 임 무 는 스냅 백 을 이용 하여 전후 단 에서 데 이 터 를 전송 하 는 인 터 페 이 스 를 잡 고 인 터 페 이 스 를 통 해 전체 검색엔진 의 효 과 를 실현 하 는 것 이다.
2.3 관련 글 에 대한 더 많은 정보 보기
전단 슬라이더 를 마지막 으로 옮 깁 니 다.페이지 의 태그 가 없 는 것 을 발견 하고 데 이 터 를 자동 으로 불 러 옵 니 다.효 과 는 다음 과 같 습 니 다.
在这里插入图片描述
在这里插入图片描述
전체 페이지 를 새로 고치 지 않 는 토대 에서 새로운 데 이 터 를 불 러 옵 니 다.이것 은 ajax 비동기 요청 을 연상 시 키 기 쉽 습 니 다.
비동기 요청 은 보통 ajax 기술 을 이용 하여 전체 페이지 를 업데이트 하지 않 는 전제 에서 데 이 터 를 유지 할 수 있 습 니 다.이 때문에 웹 프로그램 은 사용자 의 동작 에 더욱 신속하게 응답 하고 인터넷 에서 변 하지 않 은 정 보 를 보 내 는 것 을 피 할 수 있 습 니 다.
다음은 구 글 브 라 우 저 를 이용 해 비동기 요청 정 보 를 캡 처 해 보 겠 습 니 다.
2.4 ajax 비동기 요청 데이터 캡 처
구 글 브 라 우 저 를 사용 하여 ajax 비동기 요청 데 이 터 를 캡 처 합 니 다.
방해 요 소 를 피하 기 위해 서,우 리 는 가방 을 잡기 전에 clear 단 추 를 눌 러 현재 의 가방 기록 을 비 워 야 합 니 다.
在这里插入图片描述
슬라이더 를 마지막 으로 이동 하여 전단 페이지 에 데 이 터 를 자동 으로 불 러 오고 데 이 터 를 불 러 올 때 캡 처 한 패 킷 정 보 를 분석 합 니 다.여러 차례 의 분석 과 검증 을 통 해 결과 get 요청 이 대량의 갱신 데 이 터 를 가지 고 있 음 을 발견 하 였 다.다음 그림 에서 보 듯 이:
在这里插入图片描述
JSON 형식의 데이터 입 니 다.JSON 형식의 데 이 터 를 간단하게 소개 합 니 다.
JSON 은 웹 서버 에서 JSON 데 이 터 를 읽 거나(파일 로 또는 HttpRequest 로)JSON 데 이 터 를 JavaScript 대상 으로 변환 한 후 웹 페이지 에서 사용 하 는 가장 흔 한 데이터 전송 방법 중 하나 입 니 다.
분석 을 통 해 우 리 는 데이터 가 result 에 저 장 된 것 을 발견 할 수 있다.vos 목록 에 있 는 각 사전 의 경우 순환 을 사용 한 다음 dict[xxx]방식 으로 데 이 터 를 추출 할 수 있 습 니 다.
2.5 분석 url 주소
在这里插入图片描述
우 리 는 이 GET 요청 이 대량의 알 수 없 는 파 라 메 터 를 가지 고 있 는 것 을 발견 했다.경험 분석 과 영어 이니셜 을 통 해 P 는 page(페이지)이 고 Q 는 query(조회)의 뜻 이 며 다른 xxx=-1 은 기본 값 이 어야 한다.우 리 는 잠시 이 추측 에 따라 참 수 를 삭제 할 것 이다.
테스트 결과 캡 처:
在这里插入图片描述
테스트 를 통 해 추측 이 정확 하 다 는 것 을 알 게 되 었 습 니 다.q,t,p 세 개의 매개 변수 만 보류 하고 전 송 된 데이터 내용 에 접근 할 수 있 습 니 다(사실은 여기 t 매개 변수 도 삭제 할 수 있 습 니 다.학생 들 은 스스로 테스트 할 수 있 습 니 다)
이렇게 해서 이 url 에 대응 하 는 중요 한 매개 변 수 를 분석 했다.링크 는 다음 과 같다.
https://so.csdn.net/api/v3/search?q=python&t=all&p=2
우리 가 추측 한 바 와 같이 q 는 검색 을 대표 하고 p 는 page 를 대표 합 니 다.그러면 우 리 는 CSDN 엔진 의 핵심 API 를 얻 었 습 니 다.우 리 는 이 API 를 통 해 검색엔진 의 기능 을 실현 할 수 있 습 니 다.
이로써 클러치 분석 과정 이 끝났다.
3.scrapy 를 사용 하여 CSDN 데이터 인터페이스
3.1 start_requests
start 사용requests 함수 가 20 페이지 의 url 목록 을 구성 합 니 다.
여기 startrequests 방법 은 교체 가능 한 대상(iterable)을 되 돌려 야 합 니 다.이 대상 은 캡 처 에 사용 할 spider 의 첫 번 째 Request 를 포함 하고 있 습 니 다.
spider 가 캡 처 를 시작 하고 start 가 지정 되 지 않 았 을 때urls 시 이 방법 은 호출 될 것 입 니 다.이 방법 은 scrapy 에 한 번 만 호출 되 기 때문에 url 생 성기 로 구현 할 수 있 습 니 다.
scrapy.Request 를 사용 하면 GET 요청 을 보 내 지정 한 함수 로 전송 하여 처리 할 수 있 습 니 다.
자세 한 코드 작업 은 다음 과 같 습 니 다.

 #   start_urls   
    def start_requests(self):
        #      CSDN     
        input_text = input('       CSDN  :')
        #          
        for i in range(1,31):
            start_url = 'https://so.csdn.net/api/v3/search?q={}&p={}'.format(input_text,i)
            yield scrapy.Request(
                url=start_url,
                callback=self.parse
            )

3.2 parse 함수 로 데이터 추출
여기 에는 몇 가지 중요 한 방법 을 파악 하여 응용 해 야 한다.
  • response.text 가 응답 을 요청 한 문자열 형식의 데이터
  • json.loads()loads 방법 은 str 를 dict 형식 데이터 로 전환 하 는 것
  • json.dumps()dumps 방법 은 dict 형식의 데 이 터 를 str
  • 로 바 꾸 는 것 이다.
    구체 적 인 코드 조작 은 다음 과 같다.
    
    data_dict = json.loads(response.text)
    
    json 데이터 의 각 구체 적 인 생방송 간 데 이 터 를 순환 적 으로 옮 겨 다 니 는 정 보 를 사용 하여 아 이 템 사전 을 새로 만들어 데이터 저장 을 한 다음 에 yield 를 사용 하여 엔진 에 전달 하여 해당 하 는 처 리 를 합 니 다.
    코드 작업 은 다음 과 같 습 니 다.
    
    def parse(self, response):
       # response.request.headers
       print(response.request.headers)
       data_dict = json.loads(response.text)
        for data in data_dict['result_vos']:
                item = {}
             #   
             item['title'] = data['title'].replace('<em>','').replace('</em>','')
             #   
             item['author_label'] = data['nickname']
             #    
             item['view'] = data['view']
             #    
             item['zan'] = data['digg']
             #     
             item['link_url'] = data['url']
    
    
    3.3 CSV 파일 로 저장
    
    import csv
      csv        
    headers = ['title','author_label','view','zan','jianjie' ,'link_url']
        pipline   ,      
    class Day02Pipeline:
        def process_item(self, item, spider):
                         douyu.csv 
      a     
            with open('csdn.csv', 'a', encoding='utf-8', newline='') as fa:
                  headers       
                writer = csv.DictWriter(fa, headers)
                writer.writerow(item)
                print(item)
          return item
    
    
    3.4 운행 결과
    마지막 으로 실행 결과 와 저 장 된 csv 파일 을 살 펴 보 겠 습 니 다.
    터미널 실행 결 과 는 다음 과 같 습 니 다.
    在这里插入图片描述
    在这里插入图片描述
    이로써 파충류 실험 은 끝났다.
    4.효과 전시
    4.1 flask 백 엔 드 전시
    구축 과정 약
    (입문 급 구축,기업 급 개발 절차 없 이 후기 에 fllask 의 튜 토리 얼 을 고려 할 수 있 습 니 다)
    전시 구 조 는 다음 과 같다.
    在这里插入图片描述
    flask 입문 시 자체 바 이 두 가능
    4.2 효과 전시
    在这里插入图片描述
    검색 클릭 후:
    在这里插入图片描述
    왼쪽 상단 의 검색 페이지 는 입구 페이지 입 니 다.
    자,이렇게 간단 한 검색엔진 을 만 들 었 습 니 다.더 많은 관련 scrapy+flask+html 검색엔진 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기