python模拟ajax请求_使用请求lib使用python模拟ajax请求

为什么请求不下载此网页的回复?

#!/usr/bin/python

import requests

headers={ 'content-type':'application/x-www-form-urlencoded; charset=UTF-8',

'Accept-Encoding': 'gzip, deflate',

'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0',

'Referer' : 'http://sportsbeta.ladbrokes.com/football',

}

payload={'N': '4294966750',

'facetCount_156%23327': '12',

'facetCount_157%23325': '8',

'form-trigger':'moreId',

'moreId':'156%23327',

'pageId':'p_football_home_page',

'pageType':'EventClass',

'type':'ajaxrequest'

}

url='http://sportsbeta.ladbrokes.com/view/EventDetailPageComponentController'

r = requests.post(url, data=payload, headers=headers)

这些是我在Firebug中看到的POST的参数,并且收到的响应包含一个列表(足球联赛),但是当我像这样运行我的python脚本时,我什么也得不到.

(您可以在Firefox中查看请求,方法是单击link左侧导航栏中的“查看所有内容”部分,查看Firebug中的XHR.“Firebug响应”按预期显示HTML正文.)

任何想法?我对负载中%符号的处理是否会造成任何问题?

编辑:尝试使用会话

from requests import Request, Session

#turn post string into dict:

def parsePOSTstring(POSTstr):

paramList = POSTstr.split('&')

paramDict = dict([param.split('=') for param in paramList])

return paramDict

headers={'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0',

'Referer' : 'http://sportsbeta.ladbrokes.com/football'

}

#prep the data (POSTstr copied from Firebug raw source)

POSTstr = "moreId=156%23327&facetCount_156%23327=12&event=&N=4294966750&pageType=EventClass&

pageId=p_football_home_page&type=ajaxrequest&eventIDNav=&removedSelectionNav=&

currentSelectedId=&form-trigger=moreId"

payload = parsePOSTstring(POSTstr)

#end url

url='http://sportsbeta.ladbrokes.com/view/EventDetailPageComponentController'

#start a session to manage cookies, and visit football page first so referer agrees

s = Session()

s.get('http://sportsbeta.ladbrokes.com/football')

#now visit disired url with headers/data

r = s.post(url, data=payload, headers=headers)

#print output

print r.text #this is empty

工作卷曲

curl 'http://sportsbeta.ladbrokes.com/view/EventDetailPageComponentController'

-H 'Cookie: JSESSIONID=DE93158F07E02DD3CC1CC32B1AA24A9E.ecomprodsw015;

geoCode=FRA;

FLAGS=en|en|uk|default|ODDS|0|GBP;

ECOM_BETA_SPORTS=1;

PLAYED=4%7C0%7C0%7C0%7C0%7C0%7C0'

-H 'Referer: http://sportsbeta.ladbrokes.com/football'

-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0)

Gecko/20100101 Firefox/27.0'

--data 'facetCount_157%23325=8&moreId=156%23327&

facetCount_156%23327=12&event=&

N=4294966750&

pageType=EventClass&pageId=p_football_home_page&

type=ajaxrequest&eventIDNav=&

removedSelectionNav=&currentSelectedId=&

form-trigger=moreId' --compressed

然而,这种卷曲有效.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值