>  기사  >  백엔드 개발  >  Python을 사용하여 네트워크 리소스를 요청하는 방법

Python을 사용하여 네트워크 리소스를 요청하는 방법

WBOY
WBOY앞으로
2023-04-13 12:22:051960검색

Python을 사용하여 네트워크 리소스를 요청하는 방법

우리는 오랫동안 Linux 시스템 관련 지식을 공유해 왔기 때문에 일부 친구들은 Linux 운영과 관련된 것만 공유한다고 잘못 생각할 수도 있습니다. 실제로 우리가 직면하는 문제 중 일부는 그렇지 않습니다. 우리의 일상적인 개발 과정을 요약할 수 있다고 생각하는 것은 무엇이든 공유할 수 있습니다.

최근에 저는 Python을 사용하여 네트워크에 액세스하는 것과 관련된 네트워크 리소스에 정기적으로 액세스하는 프로그램을 작성하고 있으므로 오늘은 이에 대해 간략하게 요약하겠습니다.

Python을 사용하여 네트워크 리소스에 액세스

네트워크의 리소스에 액세스하기 위해 일부 친구는 urllib.request를 사용할 수 있습니다. 이 모듈은 Python 표준 라이브러리이기도 합니다. 그러나 우리는 urllib.request의 래퍼이고 사용하기 더 편리한 요청을 사용합니다. 처음 사용하는 경우 설치 요청이 필요합니다. pip를 사용하여 설치합니다.

pip install --user requests

설치가 성공적으로 완료되면 사용 시 Python 파일 위에 소개해야 합니다.

import requestsimport requests

시연의 편의를 위해 요청 모듈을 사용하여 github에서 가장 높은 별을 받은 Python 프로젝트를 방문합니다. 주소는

​https://www.php.cn/link/62d90d223cf3e2239113a4963b191d71​

전체적인 이해를 돕기 위해 먼저 브라우저에서 이 주소를 열고 내부 내용을 보면 json 형식으로 표시됩니다.

그런 다음 새 ​​test-resp.py​​ 파일을 만들고 다음 코드를 입력합니다.

import requests
url='​​https://www.php.cn/link/62d90d223cf3e2239113a4963b191d71​​';
get_resp=requests.get(url);

위 코드의 첫 번째 줄은 요청 모듈을 소개하고 두 번째 줄은 액세스할 주소를 저장합니다. 3행에서는 요청 모듈의 get 메소드를 사용하여 URL에 액세스하고 응답을 get_resp 변수에 저장합니다. 응답은 요청된 리소스의 콘텐츠와 상태를 포함하는 개체입니다. 아래와 같이 status_code 개체를 사용하여 응답 상태를 인쇄할 수 있습니다.

print(get_resp.status_code)

결과는 다음과 같습니다.

$ python ​​test-resp.py​​
200

물론 응답 텍스트, 즉 get_resp를 인쇄할 수도 있습니다. 하지만 이 텍스트는 형식이 지정되지 않아 읽기가 쉽지 않습니다. 아래 그림과 같이:

위 그림의 결과가 너무 길어서 일부만 가로채었습니다... 이 결과는 구문 분석하기 더 까다롭습니다. 하지만 전혀 걱정할 필요가 없습니다. 내용만 보면 알 수 있습니다. 내용이 json 형식이므로 응답 결과도 json이고, json에 대한 Python의 구문 분석 기능은 매우 강력합니다. 다음과 같이 이 json의 키 값을 출력합니다. 보시다시피 이 응답 결과를 json 개체로 완전히 처리할 수 있습니다. 예를 들어 위 결과의 첫 번째 키 값 total_count는 Python 웨어하우스의 총 수를 나타냅니다. 이 값을 다음과 같이 인쇄할 수 있습니다.

print(get_resp.json().keys())

실행 결과는 다음과 같습니다.

$ python ​​test-resp.py​​
dict_keys(['total_count', 'incomplete_results', 'items'])

네트워크 리소스를 읽으면 일반 html 형식을 사용하면 html 구문 분석을 완벽하게 해결할 수 있는 타사 라이브러리 BeautifulSoup을 사용할 수 있습니다. 이전 기사에서도 BeautifulSoup를 소개했습니다. Python의 Beautiful Soup 라이브러리를 사용하여 웹 페이지 분석

요청 헤더 정보 추가

일부 네트워크 리소스는 로봇(프로그램) 차단과 같은 요청에 대한 응답에 제한이 있을 수 있습니다. 또는 액세스하려면 (사용자 세션으로) 로그인해야 합니다. 이렇게 하려면 요청에 요청 헤더를 추가하고, 요청 헤더에서 브라우저를 시뮬레이션하고, 사용자 세션 정보(토큰)를 추가하는 등의 작업을 수행할 수 있습니다. 아래와 같이

response_dict=get_resp.json();
print("Total repositories:", response_dict['total_count'])

위 코드에서 headers 객체의 User-Agent는 시뮬레이션된 브라우저 정보이고 Authorization은 요청 토큰입니다. 필요에 따라 아래와 같이 다른 요청 헤더 정보를 추가할 수도 있습니다.

$ python ​​test-resp.py​​
Total repositories: 9128125

Others

위에서 사용한 예는 모두 get 요청을 처리하는 것입니다. 다음과 같이 요청의 게시 방법을 사용하세요.

headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Authorization':'41d15146-c3f3-4c0b-b48b-b5210151a9df'
}
get_resp=requests.get(url,headers=headers,params=None)

사용방법은 get request와 똑같습니다.

위 내용은 이번에 공유한 모든 내용입니다. 토론을 환영합니다.

위 내용은 Python을 사용하여 네트워크 리소스를 요청하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제