如何用Python抓取ASP网页?

2024-03-29 15:54:55 发布

您现在位置:Python中文网/ 问答频道 /正文

In this video, I give you a look at the dataset I want to scrape/take from the web. Very sorry about the audio, but did the best with what I have.当我看到一个有数千页的页面,显然有表格时,我很难描述我要做什么,但是pd.read_html文件不管用!在我意识到之前,这一页有一张表格要先填。。。。在

https://opir.fiu.edu/instructor_eval.asp

进入这个链接将允许你选择一个学期,这样做,将显示成千上万的表。我选择了一个学期后试图使用这个网址,希望能阅读HTML,但没有这样的运气。。我仍然不知道我在看什么(比如,它是一个网页,还是ASP?什么是ASP?)。如果你跟踪视频链接,你会发现如果你选择了春季学期,复制链接,并把它放到搜索栏里,它会给出一个丑陋的错误。一些SQL错误。 所以这就是我的困境。我正试图得到这些数据。。。所有这些桌子。上一篇文章,我做了一个蛮力的尝试,只需点击并拖动10分钟以上,然后粘贴到excel中。这是一种糟糕的方法,当我将excel表导入python时,它甚至没有特别有用,因为数据很难处理。非常没有条理。所以我想,嘿,为什么不用bs4刮擦呢?看起来也不那么容易,因为网址不起作用。在过滤到春季学期之后,这个URL就不起作用了,不适合你,如果你把它粘贴到python中供bs4使用。。。 所以我有点不知所措,不知道如何合理地处理这些数据。我想用bs4来刮取它,然后把它放到数据帧中以便以后操作。但是,由于它是ASP或其他任何东西,我还无法找到方法来执行此操作:\


Tags: the数据方法in链接粘贴video错误
1条回答
网友
1楼 · 发布于 2024-03-29 15:54:55

ASP代表Active Server Pages,是一个运行服务器端脚本(通常是vbs)的页面,因此您不必担心这一点,因为您希望从呈现的页面中获取数据。
为了从/instructor_evals/instr_eval_result.asp获得有效的响应,您必须提交一个表单数据为/instructor_eval.asp的POST请求,否则页面将返回一条错误消息。
如果使用urllib提交正确的数据,则应该能够使用bs4获得表。在

from urllib.request import urlopen, Request
from urllib.parse import urlencode
from bs4 import BeautifulSoup

url = 'https://opir.fiu.edu/instructor_evals/instr_eval_result.asp'
data = {'Term':'1171', 'Coll':'%', 'Dept':'','RefNum':'','Crse':'','Instr':''}
r = urlopen(Request(url, data=urlencode(data).encode()))
html = r.read().decode('utf-8', 'ignore')
soup = BeautifulSoup(html, 'html.parser')
tables = soup.find_all('table')

顺便说一句,这个错误消息是一个强烈的迹象,表明页面容易受到SQL Injection的攻击,这是一个非常讨厌的错误,我认为您应该通知管理员。在

相关问题 更多 >