우리는 오랫동안 Linux 시스템 관련 지식을 공유해 왔기 때문에 일부 친구들은 Linux 운영과 관련된 것만 공유한다고 잘못 생각할 수도 있습니다. 실제로 우리가 직면하는 문제 중 일부는 그렇지 않습니다. 우리의 일상적인 개발 과정을 요약할 수 있다고 생각하는 것은 무엇이든 공유할 수 있습니다.
최근에 저는 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'])
$ 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!