我正在尝试抓取一个网站,我可以发现该网址有一个带有效载荷参数的帖子请求,如下所示。我不知道如何使它成为有效载荷中的字典并将其发送到formdata。以下所有代码都在Request with payload
下,如何在formdata中发送?
callCount=1
page=/job.do?uno=auo&internal=1
httpSessionId=724D68422B64D786F28E57EB3EE9D07D.newweb04
scriptSessionId=D0E5AF56ACF10360C6B960329CBB012B883
c0-scriptName=normalAjaxService
c0-methodName=getJobDetailByCustId
c0-id=0
c0-param0=number:1000000157
c0-param1=number:551740849947131
batchId=2
这就是我尝试发送formdata的方式,我没有收到回复
formdata_2 = {
'callCount': '1',
'page': '/job.do?uno=auo&internal=1',
'httpSessionId': '724D68422B64D786F28E57EB3EE9D07D.newweb04',
'scriptSessionId': session_id,
'c0-scriptName': 'normalAjaxService',
'c0-methodName': 'searchJobs',
'c0-id': '0',
'c0-param0=number': '1000000157',
'c0-param1=string': '',
'c0-param2=string': '0',
'c0-param3=string': '0',
'c0-param4=number': '0',
'c0-param5=string': 'i88ky1c0',
'batchId': '0',
}
答案 0 :(得分:2)
我并不完全确定我是否正确理解了您的问题,但如果这是您在已删除网站上找到的文本,并希望将其格式化为有效的请求来抓取新网站,则可以把它变成一个字典如下:
# assume that you got that text inside a variable
scraped = """
callCount=1
page=/job.do?uno=auo&internal=1
httpSessionId=724D68422B64D786F28E57EB3EE9D07D.newweb04
scriptSessionId=D0E5AF56ACF10360C6B960329CBB012B883
c0-scriptName=normalAjaxService
c0-methodName=getJobDetailByCustId
c0-id=0
c0-param0=number:1000000157
c0-param1=number:551740849947131
batchId=2
"""
param_list = [line.split('=', 1) for line in scraped.split('\n')]
formdata = {p[0]:p[1] for p in param_list}
现在您将表单数据放在字典中。如果您要访问的页面是表单数据中的page
参数,则可以使用该页面并使用urlparse
创建apsolute URL(假设这是从回调函数内部调用的,您可以在其中{ {1}}可用:
response
现在,您可以使用相应的表单数据链接:
page = urlparse.urljoin(response.url, formdata.pop('page'))
我希望这能回答你的问题,如果没有,请进一步解释你的需求。