我有一个网站表单,我想填写一些数据并检索结果。
我能够在html中找出表单id / class,但我不知道如何设置内容并将其发送回服务器并检索结果
我使用Request来获取url和BeautifulSoup,来解析html。
这是我到目前为止所做的:
import requests
from bs4 import BeautifulSoup as bs
def get_form(raw_resp):
soup = bs(raw_resp.text)
soup = soup.body.find_all('textarea', attrs={'id':'objetos'})
form = soup[0]
return getattr(form,'attrs')
payload = {
'object ID': 'SOMEIDHERE',
}
url = 'http://www2.correios.com.br/sistemas/rastreamento/'
with requests.session() as s:
resp = s.get(url)
form = get_form(resp)
for key,value in form.items():
print "%s = %s"%(key,value)
输出:
style = text-transform:uppercase;
name = objetos
onblur = this.value=this.value.toUpperCase()
onkeydown = if (event.keyCode == 13) { this.form.submit(); return false; }
id = objetos
class = [u'f8col', u'fldSRO', u'f3row']
我想将object_ID传递给此表单并检索结果。
答案 0 :(得分:1)
在检查浏览器开发者工具中的“网络”标签时,您可以看到您需要向提供POST
和objetos
帖子参数的同一网址发出btnPesq
个请求:< / p>
with requests.session() as s:
s.get(url)
response = s.post('http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm',
data={'objetos': payload['object ID'],
'btnPesq': 'Buscar'})
print response.content
作为旁注,有相关工具可以帮助您保持更高水平并提交表单,请参阅:
两者都基于requests
和BeautifulSoup
。