[英]How to Webscrape data from a classic asp website using python. I am having trouble getting the result after submitting the POST form
我是Web抓取的初学者,我对这个过程非常感兴趣。 我为自己设定了一个项目,可以让我保持积极性,直到我完成项目。
我的目标是编写一个Python程序,该程序进入我的大学结果页面(恰好是“xx.asp”)并进入我的
单击提交按钮将显示另一个“yy.asp”页面,其中显示我的结果。 但是我在做同样的事情时遇到了很多麻烦。
结果网站: http : //result.pondiuni.edu.in/candidate.asp
注册号: 15te1218
学位: BTHEE
考试:第二
谁能告诉我如何完成任务?
我编写了一个示例程序,我并不为此感到自豪,也没有按照我的意愿工作。 以下是我写的代码。 我是一个初学者,如果我做了一些非常错误的事情,我很抱歉。 如果你可以指导我解决问题,请纠正我并且会很棒。
该网站是.asp网站而不是.aspx。 我提供了样本数据,以便您可以看到我们向网站提交请求的过程中发生了什么。
import requests
with requests.Session() as c:
url='http://result.pondiuni.edu.in/candidate.asp'
url2='http://result.pondiuni.edu.in/ResultDisp.asp'
TXTREGNO='15te1218'
CMBDEGREE='BTHEE~\BTHEE\result.mdb'
CMBEXAMNO='B'
DPATH='\BTHEE\result.mdb'
DNAME='BTHEE'
TXTEXAMNO='B'
c.get(url)
payload = {
'txtregno':TXTREGNO,
'cmbdegree':CMBDEGREE,
'cmbexamno':CMBEXAMNO,
'dpath':DPATH,
'dname':DNAME,
'txtexamno':TXTEXAMNO
}
post_request = requests.post(url, data=payload)
page=c.get(url2)
我不知道下一步该做什么,以便我可以检索我的结果页面(从代码中显示在url2
)。 所有数据都输入到程序中的链接url
中(起始链接是输入的所有信息),从提交结果页面到url2
之后。 请帮我制作这个节目。
我从Chrome的网络标签中获取了所有帖子表单参数。
你是复杂的,你的帖子数据中有回车 ,所以永远不会工作:
In [1]: s = "BTHEE~\BTHEE\result.mdb"
In [2]: print(s) # where did "\result.mdb" go?
esult.mdbHEE
In [3]: s = r"BTHEE~\BTHEE\result.mdb" # raw string
In [4]: print(s)
BTHEE~\BTHEE\result.mdb
因此,请修复表单数据,然后发布以获得结果:
import requests
data = {"txtregno": "15te1218",
"cmbdegree": r"BTHEE~\BTHEE\result.mdb", # use raw strings
"cmbexamno": "B",
"dpath": r"\BTHEE\result.mdb",
"dname": "BTHEE",
"txtexamno": "B"}
results_page = requests.post("http://result.pondiuni.edu.in/ResultDisp.asp", data=data).content
要添加已经给出的答案,您可以使用bs4.BeautifulSoup在之后的结果页面中查找所需的数据。
#!\usr\bin\env python
import requests
from bs4 import BeautifulSoup
payload = {'txtregno': '15te1218',
'cmbdegree': r'BTHEE~\BTHEE\result.mdb',
'cmbexamno': 'B',
'dpath': r'\BTHEE\result.mdb',
'dname': 'BTHEE',
'txtexamno': 'B'}
results_page = requests.get('http://result.pondiuni.edu.in/ResultDisp.asp', data = payload)
soup = BeautifulSoup(results_page.text, 'html.parser')
SubjectElem = soup.select("td[width='66%'] font")
MarkElem = soup.select("font[color='DarkGreen'] b")
Subject = []
Mark = []
for i in range(len(SubjectElem)):
Subject.append(SubjectElem[i].text)
Mark.append(MarkElem[i].text)
Transcript = dict(zip(Subject, Mark))
这将给出一个字典,主题作为键,并标记为值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.