>백엔드 개발 >파이썬 튜토리얼 >웹사이트 크롤러의 실질적인 공유

웹사이트 크롤러의 실질적인 공유

零下一度
零下一度원래의
2017-07-27 17:02:241345검색

세대 배경

Edit

인터넷의 급속한 발전과 함께 월드와이드웹은 많은 양의 정보를 담는 매체가 되었고, 이 정보를 어떻게 효과적으로 추출하고 활용할 것인가는 큰 과제가 되었습니다. 전통적인 일반 검색 엔진인 AltaVista, Yahoo! 및 Google과 같은 검색 엔진은 사람들이 정보를 검색하는 데 도움을 주는 도구 역할을 하며 사용자가 World Wide Web에 액세스하는 입구이자 안내자가 됩니다. 그러나 이러한 일반 검색 엔진에는 다음과 같은 특정 제한 사항도 있습니다.

(1) 다양한 분야와 배경을 가진 사용자는 종종 다른 검색 목적과 요구 사항을 가지고 있습니다. 일반 검색 엔진에서 반환되는 결과에는 사용자가 포함하지 않는 많은 항목이 포함됩니다. 웹페이지에 관심을 가져보세요.

(2) 일반 검색 엔진의 목표는 가능한 가장 넓은 네트워크 범위를 달성하는 것입니다. 제한된 검색 엔진 서버 리소스와 무제한 네트워크 데이터 리소스 사이의 모순은 더욱 심화될 것입니다.

(3) 월드 와이드 웹의 데이터 형식이 풍부하고 네트워크 기술의 지속적인 발전으로 인해 사진, 데이터베이스, 오디오 및 비디오 멀티미디어와 같은 다양한 데이터가 대량으로 등장하므로 일반 검색 엔진은 이에 대해 무력한 경우가 많습니다. 정보가 밀집되어 있고 일정한 구조를 갖고 있는 데이터를 발견하고 획득하는 것이 좋습니다.

(4) 대부분의 일반 검색 엔진은 키워드 기반 검색을 제공하며, 의미 정보 기반 쿼리를 지원하기 어렵습니다.

웹 크롤러

위의 문제를 해결하기 위해 관련 웹페이지 리소스를 구체적으로 캡처하는 집중 크롤러가 탄생했습니다. 포커스 크롤러(Focused Crawler)는 설정된 크롤링 목표를 기반으로 World Wide Web의 웹 페이지 및 관련 링크에 선택적으로 액세스하여 필요한 정보를 자동으로 다운로드하는 프로그램입니다. 일반적인 목적의 웹 크롤러와 달리 집중형 크롤러는 넓은 범위를 추구하지 않고 특정 주제 콘텐츠와 관련된 웹 페이지를 크롤링하고 주제 중심의 사용자 쿼리를 위한 데이터 리소스를 준비하는 것을 목표로 합니다.

1 크롤러의 작동 원리와 주요 기술 개요에 집중

웹 크롤러는 검색 엔진용 World Wide Web에서 웹 페이지를 자동으로 추출하는 프로그램이며 검색 엔진의 중요한 구성 요소입니다. . 기존 크롤러는 하나 또는 여러 개의 초기 웹페이지의 URL에서 시작하여 웹페이지를 크롤링하는 동안 현재 페이지에서 새로운 URL을 지속적으로 추출하여 특정 URL이 나올 때까지 대기열에 넣습니다. 시스템의 정지 조건이 충족되었습니다. 집중형 크롤러의 작업 흐름은 더 복잡합니다. 특정 웹 페이지 분석 알고리즘에 따라 주제와 관련 없는 링크를 필터링하고 유용한 링크를 유지하며 크롤링을 기다리는 URL 대기열에 넣어야 합니다. 그런 다음 특정 검색 전략에 따라 대기열에서 다음에 크롤링할 웹 페이지 URL을 선택하고 시스템의 특정 조건에 도달하면 중지될 때까지 위 프로세스를 반복합니다. 또한 크롤러가 크롤링한 모든 웹 페이지는 시스템에 의해 저장되며 집중적인 크롤러에 대한 후속 쿼리 및 검색을 위한 특정 분석, 필터링 및 색인화를 거치게 됩니다. 이 프로세스에서 얻은 분석 결과는 다음에 대한 피드백과 지침을 제공할 수도 있습니다. 향후 크롤링 프로세스.

일반 웹 크롤러와 비교하여 집중형 크롤러는 세 가지 주요 문제를 해결해야 합니다.

(1) 크롤링 대상에 대한 설명 또는 정의

(2) 웹 페이지 또는 데이터 분석 및 필터링

(3) ) URL에 대한 검색 전략.

웹사이트 크롤러는 주로 블로그 아래의 모든 기사 내용과 제목을 크롤링하여 데이터 디렉토리에 저장합니다. 자세한 내용은 다음과 같습니다:

import requestsimport re

url = ''def get_html(url):#打开url并获取该url的所有html信息html_content = requests.get(url).text#从html_conten所有的html信息中匹配到所有博客的超链接地址href_list = re.findall(r'href=\"(.*)\"\>(.*)\<\/a\>', html_content)for line in href_list:#打开超链接地址line_html = requests.get(line[0])
        conten = line[1]
        line_content = line_html.text
        line_encoding = line_html.encodingprint('文章标题:%s,文章编码:%s'%(conten, line_encoding))
get_html(url)

위 내용은 웹사이트 크롤러의 실질적인 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.