Python은 간단한 두 단계로 날씨 크롤러 수집기를 구현합니다.

高洛峰
풀어 주다: 2016-10-18 14:01:19
원래의
1342명이 탐색했습니다.

크롤러에 대해 이야기하면 매우 신비롭다고 느낄 수도 있지만 실제로는 우리가 상상하는 것만큼 마법적이지는 않습니다(물론 구글과 바이두의 크롤러는 복잡하고 강력합니다. 그 위력은 크롤러 자체의 힘이 아니라, 그러나 백그라운드 데이터 처리 및 데이터 마이닝 알고리즘은 매우 강력합니다.) 오늘 우리는 그 미스터리를 공개할 것입니다. 하하, 간단한 두 단계로 웹 날씨 크롤러 프로그램을 구현할 수 있습니다. . .

간단히 말하면 크롤러는 두 부분으로 구성됩니다. 1. 웹페이지의 텍스트 정보를 가져옵니다. 2. 원하는 데이터를 얻기 위한 데이터 분석.

1. 웹페이지 텍스트 정보를 얻습니다.

Python은 HTML을 얻는 데 매우 편리합니다. urllib 라이브러리를 사용하면 몇 줄의 코드만으로 필요한 기능을 얻을 수 있습니다.

#引入urllib库
import urllib
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
page.close()
return html
로그인 후 복사

여기에 반환되는 것은 웹 페이지의 소스 코드인 html 코드입니다.

그렇다면 우리가 원하는 정보를 어떻게 얻을 수 있을까요? 그런 다음 웹 페이지 분석에서 가장 일반적으로 사용되는 도구인 정규 표현식을 사용해야 합니다.

2. 정규식 등을 기반으로 필수 콘텐츠를 얻습니다.

정규식을 사용할 때는 웹페이지 정보의 구조를 잘 관찰하고 올바른 정규식을 작성해야 합니다.

파이썬 정규 표현식의 사용도 매우 간단합니다.

#引入正则表达式库
import re
def getWeather(html):
reg = &#39;<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>&#39;
weatherList = re.compile(reg).findall(html)
return weatherList
로그인 후 복사

설명:

여기서 reg는 정규 표현식이고 html은 첫 번째 단계에서 얻은 텍스트입니다. . findall의 기능은 HTML에서 정규 일치 항목과 일치하는 모든 문자열을 찾아 WeatherList에 저장하는 것입니다. 그런 다음 WeathereList의 데이터 출력을 열거합니다.

여기서 정규식 reg에 대해 주의해야 할 두 가지 사항이 있습니다.

하나는 "(.*?)" 입니다. () 안의 내용이 우리가 얻을 내용인 한, 대괄호가 여러 개 있으면 findall의 각 결과에는 이 대괄호 안의 내용이 포함됩니다. 위에는 도시, 최저 기온, 최고 기온에 해당하는 3개의 괄호가 있습니다.

다른 하나는 ".*?" 입니다. Python의 정규 일치는 기본적으로 탐욕적입니다. 즉, 기본적으로 가능한 한 많은 문자열과 일치합니다. 마지막에 물음표를 추가하면 non-greedy 모드, 즉 가능한 적은 수의 문자열과 일치한다는 의미입니다. 여기서는 매칭해야 할 도시가 여러 개이므로 비탐욕 모드를 사용해야 한다. 그렇지 않으면 매칭 결과가 하나만 남게 되어 부정확해진다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿