【发布时间】:2012-01-06 10:37:47
【问题描述】:
网址1:https://duapp3.drexel.edu/webtms_du/
网址2:https://duapp3.drexel.edu/webtms_du/Colleges.asp?Term=201125&univ=DREX
URL3:https://duapp3.drexel.edu/webtms_du/Courses.asp?SubjCode=CS&CollCode=E&univ=DREX
作为个人编程项目,我想抓取我大学的课程目录并将其作为 RESTful API 提供。
但是,我遇到了以下问题。
我需要抓取的页面是 URL3。但是URL3只有在我访问URL2后才返回有意义的信息(它在那里设置了术语Colleges.asp?Term=201125),但是URL2只有在访问URL1之后才能访问。
我尝试使用 Fiddler 监控往返的 HTTP 数据,但我认为他们没有使用 cookie。关闭浏览器会立即重置所有内容,所以我怀疑他们正在使用 Session。
如何抓取 URL 3?我尝试以编程方式首先访问 URL 1 和 2,然后执行 file_get_contents(url3) 但这不起作用(可能是因为它注册为三个不同的会话。
【问题讨论】:
-
有一个使用cookies设置的会话:
ASPSESSIONIDASBRRCCS是它的名字,虽然我不明白为什么需要URL2(可能是我,我第一次忘记注意了) -
@Grexis:啊,谢谢你的信息。 URL3 提供诸如上课地点和上课人员等信息。这取决于似乎在 URL2 中设置的术语(学期)
-
也许值得一提的是,php 是少数没有机械化库的动态语言之一。出于这个原因,perl python 或 ruby 都是更好的抓取选择。
标签: php http session screen-scraping