머리말
학습은 나를 행복하게하고 게임은 나를 슬프게합니다. 오늘 rushB는 아무것도 아닌 다른 날입니다.
HXDM, 요청 라이브러리의 방법과 사용 방법을 함께 배우고 코드의 세계에 빠져 보자. 우 ~~
목차
1. 요청 라이브러리 소개
먼저 요청 라이브러리의 공식 웹 사이트를 나열합니다. 현재 위치 : 요청 라이브러리 중국 공식 웹 사이트
요청 라이브러리 선언 요청 요청 : HTTP for Humans (지배)
공식 웹 사이트에는 자세한 사용 문서가 있으며 몇 가지 작은 예가 있습니다. 공식 웹 사이트에서 Luo Li의 속물 블로그를 읽고 싶지 않은지 확인할 수 있습니다.
요청 라이브러리는 urllib 프레임 워크를 기반으로합니다 .
둘째, 요청 라이브러리의 일반적인 방법 및 지침
방법 | 기술 |
---|---|
requests.get () | 특정 페이지 얻기 |
requests.post () | HTTP POST 요청 보내기 |
requests.put () | HTTP PUT 요청 제출 |
requests.delete () | HTTP 삭제 요청 제출 |
requests.head () | HTTP HEAD (헤더) 정보 가져 오기 |
requests.options () | HTTP OPTINS 요청 제출 |
셋, 응답 개체의 속성 및 설명
응답 객체의 속성을 이해하기 전에 응답 객체가 무엇인지 살펴 보겠습니다. 예를 들어 브라우저를 사용할 때 CSDN을 검색하고 F12를 눌러 개발자 도구를 엽니 다. 네트워크에서 아래 그림의 빨간색 원 안에 두 개의 헤더가 표시됩니다.
요청 객체는 브라우저가 서버로 보낸 요청이고 응답 객체는 브라우저 요청에 대한 서버의 응답입니다. 아래 코드를 살펴 보겠습니다.
import requests
r = requests.get('https://www.baidu.com')
그래서 우리는 그것을 'www.baidu.com'
요청으로 생각할 수 있고 메소드 requests.get()
는 응답을 반환하므로 응답 객체를 얻습니다 r
. 직접 인쇄 해 봅시다 r
.
import requests
r = requests.get('https://www.baidu.com')
print(r)
실행 결과 :
결과가 우리가 상상 한 Baidu 웹 페이지의 html 코드가 아니라 응답 상태 코드임을 알 수 있습니다. 이것은 r
여기에 응답 객체 가 있기 때문에 원하는 정보를 얻기 위해 속성에 액세스해야하기 때문입니다.
응답 개체의 속성 :
속성 | 기술 |
---|---|
response.text | HTTP 응답 페이지 콘텐츠 |
response.encoding | 텍스트 인코딩 형식 |
response.apparent_encoding | 콘텐츠 분석에서 파생 된 응답 콘텐츠 코딩 방법 |
response.status_code | HTTP 응답 상태 |
response.content | HTTP 응답 페이지 콘텐츠의 바이너리 형식 |
다음 코드를 살펴 보겠습니다.
import requests
r = requests.get('https://www.baidu.com')
r.encoding = 'utf-8'
print(r.text)
실행 결과 :
Baidu 홈페이지의 HTML 코드를 얻었습니다.
넷째, 요청 라이브러리에서 공통 메소드 사용
1. requests.get () 사용
get 메소드는 요청 라이브러리에서 가장 일반적으로 사용되는 메소드이며 매개 변수를 변경하여 원하는 HTTP 응답을 얻을 수 있습니다.
예를 들어 Douban 웹 사이트를 직접 방문하여
코드 가 무엇인지 확인합니다 .
import requests
r = requests.get('https://www.douban.com')
r.encoding = 'utf-8'
print(r.text)
실행 결과 :
이봐, 무슨 일이야, 아무것도 없어, 코드가 잘못이 아니야! 텍스트가없는 이유는 무엇입니까?
HTTP 상태 응답 코드를 인쇄 해 보겠습니다.
암호:
import requests
r = requests.get('https://www.douban.com')
r.encoding = 'utf-8'
print(r.status_code)
실행 결과 :
HTTP 상태 응답 코드가 418
입니다.이 상태 코드는 무엇을 의미합니까? 418
: 클라이언트가 찻 주전자에 커피를 만들라는 요청을 보낼 때 다음을 의미하는 오류 상태 코드를 반환합니다. 즉, "나는 찻 주전자입니다"라는 의미입니다. 이 HTTP 상태 코드는 일부 웹 사이트에서 이스터 에그로 사용되며 일부 웹 사이트에서도 사용됩니다.파충류 경고. 그것은 우리가 경고를 받았음을 의미하고 Douban은 우리에게 "당신이 나쁜 파충류, 규칙을 따르지 않으면 사람들이 당신에게 그것을 보여주지 않을 것입니다! Humph╭ (╯ ^ ╰) ╮!"라고 말했습니다. 따라서 일반적인 방법으로 Douban에 액세스해야합니다. 다행히도이 requests.get()
메서드를 사용하면 브라우저 액세스를 시뮬레이션하는 매개 변수를 추가 할 수 있습니다. 이제 "이봐, 도망 칠 수 없습니다."라고 말할 수 있습니다.
브라우저 액세스를 모방하는 방법은 무엇입니까?
웹 페이지를 열고 F12를 눌러 개발자 모드를 열고 네트워크에서 이름 아래의 항목을 클릭
하면 다음 상황을 볼 수 있습니다.
요청 헤더 아래의 큰 빨간색 원 User-Agent
은 서버 브라우저에 알려주는 정보입니다. 코드를 어떻게 작성할 수 있습니까?
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
} # 模拟浏览器访问
r = requests.get('https://www.douban.com', headers=headers)
r.encoding = 'utf-8'
print(r.text)
print('状态码:')
print(r.status_code)
실행 결과 :
Douban의 html 코드와 상태 코드가 있음을 알 수 200
있습니다. requests.get()
이 방법에는 유용한 매개 변수가 많이 있습니다. 예를 들어
payload = {
'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
대신에
r = requests.get("http://httpbin.org/get?key1=value1&key2=value2")
요청 라이브러리 의 공식 웹 사이트 로 이동 하여 직접 탐색하고 개선 할 코드를 더 작성할 수 있습니다.
2. requests.post () 메서드 사용
요청 라이브러리를 사용하면 일부 웹 페이지에서 URL
후속 추가를 허용하지 않고 Vaule
양식 만 허용 할 수 있기 때문에 게시물에서 HTTP 응답을 요청할 수 있습니다. 우리는 쓸 수있다:
payload = {
'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
이렇게하면 양식의 내용을 직접 사용자 지정할 수 있습니다. emmm 양식이 무엇인지에 관해서는 학습이 필요합니다.
3. 넣기, 삭제 및 기타 방법 사용
다른 방법의 사용은 당연히 위와 유사하며 HTTP 요청에 대한 지식을 습득 한 후 웹 리소스를 크롤링하는 데 사용해야하는 방법을 자연스럽게 알게됩니다.
사용 예 :
r = requests.put('http://httpbin.org/put', data = {
'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
4. 웹 사이트 연습
http://httpbin.org 는 요청과 응답을 받아들이는 웹 사이트로 보통 연습 할 수 있습니다.
어서!