Python请求,如何执行多个POST操作
我使用Python请求,如何执行多个POST操作,python,python-3.x,web-scraping,python-requests,screen-scraping,Python,Python 3.x,Web Scraping,Python Requests,Screen Scraping,我使用python3.2和请求库的最新版本。当我对登录到端点的用户执行第一次HTTP POST时,我成功登录。现在我想在登录后发布一些数据。当我执行第二篇文章时,我得到了一个有效的答案(200 OK),但第二篇文章操作的响应重定向URL是example.com/index。通常它应该是example.com/my account,但当我刷新浏览器以查看它时,没有任何更改 这是我的密码: import sys import requests from lxml import etree from
python3.2
和请求库的最新版本。当我对登录到端点的用户执行第一次HTTP POST时,我成功登录。现在我想在登录后发布一些数据。当我执行第二篇文章时,我得到了一个有效的答案(200 OK
),但第二篇文章操作的响应重定向URL是example.com/index
。通常它应该是example.com/my account
,但当我刷新浏览器以查看它时,没有任何更改
这是我的密码:
import sys
import requests
from lxml import etree
from bs4 import BeautifulSoup
from furl import furl
#get user compenent
mail="thoryn.hiroshi@lcelandic.com"
password="333"
url = 'https://example.com/login.php'
#make the requests in one session
with requests.session() as client:
# Retrieve the CSRF(sid) token first
tree = etree.HTML(client.get(url).content)
csrf = tree.xpath('//input[@name="_sid"]/@value')[0]
#form data
formData = dict(_sid=csrf, email=mail,pwd=password,process="login")
#use same session client
r = client.post(url, data=formData)
idurl=r.url
print( r.request.headers)
g=client.get(idurl)
# this for scrape site html data, i guess isn't matter with requests problem
soup = BeautifulSoup(g.text, 'html.parser')
adispo=soup.find_all('a', attrs={"class":"dispo"})
i=0
datalist=[]
for i in range(0,len(adispo)):
linkajax=adispo[i]['onclick']
parsedlink= linkajax[30:247]
temp=furl(parsedlink)
data={
"timestamp":temp.args['timestamp'],
"skey":temp.args['skey'],
"id":temp.args['fg_id'],
"time":temp.args['result']
}
datalist.append(data)
# print(rdvlist,len(rdvlist))
getdata=datalist[0]
posturl='https://example.com/action.php'
datapayload={
"data name":"data"
}
secondpost=client.post(posturl,data=datapayload)
print(secondpost.reason, secondpost.url)
如果您想让它成为一个可重用的程序,用于验证多个请求响应,那么您需要对其进行结构化以处理对象。将其包装为三个函数,一个用于发送HTTP请求,一个用于处理HTTP响应,另一个用于从HTTP响应DOM中删除属性。然后,您可以将函数包装成一个循环,并从URL列表中多次执行主脚本
这里有一个很好的入门参考:我应该使用scrapy module?@MomoSetti它将帮助您完成您的任务,是的。