버전 번호: Python2.7.5, Python3에는 주요 변경 사항이 있습니다. 다른 튜토리얼을 찾아보세요.
소위 웹 페이지 크롤링은 URL 주소에 지정된 네트워크 리소스를 네트워크 스트림에서 읽어 로컬에 저장하는 것입니다.
프로그램을 사용하여 IE 브라우저의 기능을 시뮬레이션하는 것과 유사하게 URL을 HTTP 요청의 내용으로 서버에 보낸 다음 서버의 응답 리소스를 읽습니다.
Python에서는 urllib2 구성 요소를 사용하여 웹 페이지를 크롤링합니다.
urllib2는 URL(Uniform Resource Locator)을 얻는 Python의 구성 요소입니다.
urlopen 함수 형태로 매우 간단한 인터페이스를 제공합니다.
가장 간단한 urllib2 애플리케이션 코드에는 4줄만 있으면 됩니다.
urllib2의 역할을 경험하기 위해 urllib2_test01.py라는 새 파일을 만들어 보겠습니다.
import urllib2 response = urllib2.urlopen('http://www.baidu.com/') html = response.read() print html
F5를 눌러 작업 결과를 확인하세요.
Baidu 홈페이지를 열고 마우스 오른쪽 버튼을 클릭한 후 소스 코드 보기(Firefox 또는 Google Chrome)를 선택하면 콘텐츠가 다음과 같은 것을 확인할 수 있습니다. 정확히 똑같습니다. 즉, 위 4줄의 코드는 우리가 바이두를 방문할 때 브라우저가 수신한 모든 코드를 출력하는 것입니다. urllib2의 가장 간단한 예입니다. URL은 "http:" 외에도 "ftp:", "file:" 등으로 대체될 수 있습니다. HTTP는 요청 및 응답 메커니즘을 기반으로 합니다. 클라이언트가 요청하고 서버가 응답을 제공합니다. urllib2는 요청 객체를 사용하여 HTTP 요청을 매핑합니다. 가장 간단한 사용 형태에서는 요청하려는 주소로 요청 개체를 생성합니다. urlopen을 호출하고 요청 개체를 전달하면 관련 요청 응답 개체가 반환됩니다. 이 응답 객체는 파일 객체와 같아서 Response에서 .read()를 호출할 수 있습니다. <… import urllib2
req = urllib2.Request('http://www.baidu.com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page
1. 데이터 양식 데이터 보내기
이 내용은 웹 작업을 해본 사람이라면 누구나 익숙할 것이라고 믿습니다.
urllib2_test03.py라는 새 파일을 만들어서 살펴보겠습니다.
req = urllib2.Request('ftp://example.com/')
데이터 매개변수가 전송되지 않으면 urllib2는 다음을 사용합니다. GET 요청 방식.
GET 요청과 POST 요청의 차이점은 POST 요청에는 일반적으로 "부작용"이 있다는 것입니다.
import urllib import urllib2 url = 'http://www.someserver.com/register.cgi' values = {'name' : 'WHY', 'location' : 'SDU', 'language' : 'Python' } data = urllib.urlencode(values) # 编码工作 req = urllib2.Request(url, data) # 发送请求同时传data表单 response = urllib2.urlopen(req) #接受反馈的信息 the_page = response.read() #读取反馈的内容
2. 헤더를 http 요청으로 설정
일부 사이트는 프로그램에서 액세스하는 것을 좋아하지 않습니다. 사람의 액세스) 또는 다양한 버전의 콘텐츠를 다양한 브라우저로 보낼 수 있습니다.
다음 예에서는 위와 동일한 콘텐츠를 전송하지만 Internet Explorer로 시뮬레이션합니다.
import urllib2 import urllib data = {} data['name'] = 'WHY' data['location'] = 'SDU' data['language'] = 'Python' url_values = urllib.urlencode(data) print url_values name=Somebody+Here&language=Python&location=Northampton url = 'http://www.example.com/example.cgi' full_url = url + '?' + url_values data = urllib2.open(full_url)