Requests는 urllib2의 모든 기능을 상속합니다.
Requests는 HTTP 연결 지속성 및 연결 풀링을 지원하고, 쿠키를 사용하여 세션을 유지하도록 지원하고, 파일 업로드를 지원하고, 응답 콘텐츠의 인코딩 자동 결정을 지원하고, 국제화된 URL 및 POST 데이터의 자동 인코딩을 지원합니다.
설치 방법
pip를 사용하여 설치
$ pip install requests
기본 GET 요청(헤더 매개변수 및 parmas 매개변수)
1 가장 기본적인 GET 요청은 get 메소드'
response = requests.get("http://www.baidu.com/") # 也可以这么写 # response = requests.request("get", "http://www.baidu.com/")
를 직접 사용할 수 있습니다. 2. 헤더 및 쿼리 매개변수 추가
헤더를 추가하려면 headers 매개변수를 전달하여 요청 헤더에 헤더 정보를 추가할 수 있습니다.
URL에 매개변수를 전달하려면 params 매개변수를 사용할 수 있습니다.
import requests kw = {'wd':'长城'} headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"} # params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode() response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers) # 查看响应内容,response.text 返回的是Unicode格式的数据 print (response.text) # 查看响应内容,response.content返回的字节流数据 print (respones.content) # 查看完整url地址 print (response.url) # 查看响应头部字符编码 print (response.encoding) # 查看响应码 print (response.status_code)
실행 결과
......
......
'http://www.baidu.com/s?wd=%E9%95%BF%E5%9F% 8E'
'utf-8'
200
response.text를 사용할 때 요청은 HTTP 응답의 텍스트 인코딩을 기반으로 응답 콘텐츠를 자동으로 디코딩하며 대부분의 유니코드 문자 집합을 원활하게 디코딩할 수 있습니다.
response.content를 사용할 때 반환되는 것은 서버 응답 데이터의 원본 바이너리 바이트 스트림이며, 이는 이미지와 같은 바이너리 파일을 저장하는 데 사용할 수 있습니다.
1. 기본 POST 요청
response = requests.post("http://www.baidu.com/",data = data)
2.body with 매개변수
formdata = { "type": "AUTO", "doctype": "json", "key": "www", "ue": "UTF-8", } url = "http://auto-installment/v1/loan-credit-check" response = requests.post(url,data = data,headers=headers) print(response.text)#显示返回结果 print(response.json())# 如果是json文件可以直接显示
참고:
인쇄된 결과에 중국어 문자가 깨져 표시됩니다. json.dupms(response, verify_ascii=False)를 사용하세요. )을 해결하기 위해
일반적으로 Session은 다른 페이지에 액세스하기 전에 로그인하는 등 요청 전반에 걸쳐 특정 매개변수를 유지하는 데 사용됩니다.
# 1. 创建session对象,可以保存Cookie值 session = requests.session() # 2. 需要登录的用户名和密码 data = {"username": "mxxxx", "password": "1233444"} # 3. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里 session.post("https://www.jianshu.com/sign_in", data=data) # 4. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面 response = session.get("https://www.jianshu.com/writer#/")
1. 오류가 보고되지만 인터페이스 자체에는 문제가 없습니다. 인터페이스에는 단순 유형(일반적으로 3개 미만)과 복합 객체 유형이라는 두 가지 유형의 요청 매개변수가 있기 때문입니다.
해결책: 헤더에서 이 두 매개변수의 유형을 정의하세요
단순 유형: headers={"Content-Type": "application/x-www-form-urlencoded"}
복잡한 개체 유형: headers= {"Content -Type":application/json}
2. 일부 HTTPS 요청에는 SSL 인증서 확인이 있습니다
해결 방법: response = 요청.get("https://www.baidu.com/", verify =False)
1. 요청이 실패한 후 재시도 메커니즘을 추가하세요(실패하면 3번 재시도됩니다)
request_retry = requests.adapatrs.HTTPAdapaters(max_retries=3) session.mount('https://',request_retry)
2. grequests를 사용하여 비동기 요청을 구현하세요
urls = [ 'http://www.url1.com', 'http://www.url2.com', 'http://www.url3.com', 'http://www.url4.com', 'http://www.url5.com', ] resp = (grequests.get(u) for u in urls) grequests.map(resp)
3.
요청 사이에 쿠키를 유지하기 위해 세션 인스턴스를 사용하지만 특별한 경우에는 사용자 정의 쿠키를 사용해야 합니다
요청 사이에 쿠키를 유지하기 위해 세션 인스턴스를 사용하지만 특별한 경우에는 사용자 정의 쿠키를 사용해야 합니다
# 自定义cookies cookie = {'guid':'5BF0FAB4-A7CF-463E-8C17-C1576fc7a9a8','uuid':'3ff5f4091f35a467'} session.post('http://', cookies=cookie)
4. API 요청에 소요된 시간을 계산합니다
session.get(url).elapsed.total_seconds()
5. 요청 시간 초과 설정
session.get(url, timeout=15)
6. 파일 업로드
요청은 파일 데이터 제출을 시뮬레이션하기 위해 파일을 사용합니다.
위 내용은 Python이 요청을 사용하여 웹 페이지를 요청하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!