繁体   English   中英

如何使用python从经典的asp网站Webscrape数据。 提交POST表单后,我无法获得结果

[英]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”)并进入我的

  1. 我的考试没有
  2. 我的课程
  3. SEMESTER并将其提交到网站。

单击提交按钮将显示另一个“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM