為什么做這個(gè)
和同學(xué)聊天,他想爬取一個(gè)網(wǎng)站的post請求
觀察
該網(wǎng)站的post請求參數(shù)有兩種類型:(1)參數(shù)體放在了query中,即url拼接參數(shù)(2)body中要加入一個(gè)空的json對象,關(guān)于為什么要加入空的json對象,猜測原因?yàn)榉磁老x。既有query參數(shù)又有空對象體的body參數(shù)是一件腦洞很大的事情。
一開始先在?apizza網(wǎng)站 上了做了相關(guān)實(shí)驗(yàn)才發(fā)現(xiàn)上面這個(gè)規(guī)律的,并發(fā)現(xiàn)該網(wǎng)站的請求參數(shù)要為raw形式,要是直接寫代碼找規(guī)律不是一件容易的事情。
源碼
import requests import json headers = { 'Accept':'application/json, text/javascript, */*; q=0.01', 'X-Requested-With':'XMLHttpRequest', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36', 'Content-Type':'application/json', 'Accept-Encoding':'gzip, deflate', 'Accept-Language':'zh-CN,zh;q=0.8', 'Cache-Control':'no-cache', } #空的對象,body參數(shù) data = {} data = json.dumps(data) page = 0 url = '網(wǎng)站地址,后面為參數(shù)?param1=1?m1='+str(page) response = requests.post(url = url,data=data ,headers =headers ) print(response.url) print(response.text)
總結(jié)
- 現(xiàn)在相關(guān)工具中發(fā)現(xiàn)現(xiàn)象
- 請求方式確定:post還是get或者其它
- 參數(shù)類型:form-data還是raw或者其它
- 參數(shù)位置:若是post請求,在query中還是body中,還是二者皆有
ps:python requests 發(fā)起http POST 請求
python requests 發(fā)起http POST 請求,帶參數(shù),帶請求頭:
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json url = 'http://official-account/app/messages/group' body = {"type": "text", "content": "測試文本", "tag_id": "20717"} headers = {'content-type': "application/json", 'Authorization': 'APP appid = 4abf1a,token = 9480295ab2e2eddb8'} #print type(body) #print type(json.dumps(body)) # 這里有個(gè)細(xì)節(jié),如果body需要json形式的話,需要做處理 # 可以是data = json.dumps(body) response = requests.post(url, data = json.dumps(body), headers = headers) # 也可以直接將data字段換成json字段,2.4.3版本之后支持 # response = requests.post(url, json = body, headers = headers) # 返回信息 print response.text # 返回響應(yīng)頭 print response.status_code
總結(jié)
以上所述是小編給大家介紹的基于Python的Post請求數(shù)據(jù)爬取的方法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
