高德地圖通過GET方式發送url請求數據。url里需要包含開發者key以及一些請求的具體參數。(詳情可見高德官網)高德返回的數據默認為JSON格式,方便處理。
順帶來回憶一下requests模塊的一些方法。
requests發送GET請求:
基本操作:

import requests ret = requests.get('https://github.com/timeline.json') print(ret.url) # 打印訪問的url print(ret.text) # 打印返回值 print(ret.content) #打印內容,編碼格式默認為Unicode print(ret.content.decode("utf-8")) #內容解碼為utf-8
有水平操作:

import requests payload = {'key1': 'value1', 'key2': 'value2'} ret = requests.get("http://httpbin.org/get", params=payload) print(ret.url) # 打印訪問的url http://httpbin.org/get?key1=value1&key2=value2 print(ret.text) # 打印返回值 print(re.json()) #將返回的JSON數據 print(re.content) #打印二進制的數據格式,轉化為str需要decode轉碼 import json print(json.loads(re.text))
高級操作:

import requests ret = requests.get( url='http://www.baidu.com', params={'k1':123,'k2':456}, #http://www.baidu.com?k1=123&k2=456 cookies={'c1':'111','c2':'222'}, #requests會將這個cookie放到請求頭中 headers={ #一般在請求頭中做爬蟲限制就下面三個限制 'User-Agent':'', # 偽造瀏覽器標記 'Referer': 'http://dig.chouti.com/', # 有些網站在爬取時做了Referer限制,即判斷上一次訪問的是否是這個網站,是才讓登錄 'xml-httprequest':'true', #發送ajax請求可能就會有這個標記 } ) print ret.text
requests發送POST請求:
基本用例

import requests payload = {'key1': 'value1', 'key2': 'value2'} ret = requests.post("http://httpbin.org/post", data=payload) print(ret.text)
請求頭和數據實例

import requests import json url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} headers = {'content-type': 'application/json'} ret = requests.post(url, data=json.dumps(payload), headers=headers) print(ret.text) print(ret.cookies)
requests發送post常用參數

requests.post發送文件

import requests requests.post( url='xxx', files={ 'f1':open('s1.py','rb'), #這樣就可以將s1.py這個文件上傳到上面url中了 'f2':('ssss1.py',open('s1.py','rb')), #指定上傳文件名:第一個參數是上傳到服務器端的文件名 } )
requests.request()發送請求:
requests.request()常用參數

requests.request( method='POST', # 提交方式 url='http://www.oldboyedu.com', # 提交地址 params={'k1': 'v1', 'k2': 'v2'}, # 在url中傳遞的數據:get方式 data={'user': 'alex', 'pwd': '123'}, # 通過請求體傳遞數據:post方式 # json = {'user':'alex','pwd':'123',{'k1':'v1','k2':'v2'}}, # json和data都是通過post向請求體傳遞數據,但是json傳遞的數據可以在字典中嵌套字典 cookies={'cook1': 'value1'}, # 發送Cookie到服務器端 headers={ 'Referer': 'http://dig.chouti.com/', # 有些網站在爬取時做了Referer限制,即判斷上一次訪問的是否是這個網站,是才讓登錄 'User-Agent': 'Mozilla/5.0Safari/537.36', # 偽造瀏覽器客戶端(這里是谷歌瀏覽器) }, )
requests.Session()幫我們自動找到cookie攜帶信息自動登錄

import requests session = requests.Session() ### 1、首先登陸任何頁面,獲取cookie i1 = session.get(url="http://dig.chouti.com/help/service") ### 2、用戶登陸,攜帶上一次的cookie,后台對cookie中的 gpsd 進行授權 i2 = session.post( url="http://dig.chouti.com/login", data={ 'phone': "8618538752511", 'password': "7481079xl", 'oneMonth': "" }) ### 3、這個是點贊某條新聞的url(這樣就可以模仿登錄點贊了) i3 = session.post(url="http://dig.chouti.com/link/vote?linksId=15055231",)