【发布时间】:2012-02-04 03:49:32
【问题描述】:
相关问题:Set session to scrape page
作为一个个人项目,我正在尝试抓取我大学的课程目录,以将其作为 RESTful API 提供。
网址1:https://duapp3.drexel.edu/webtms_du/
网址2:https://duapp3.drexel.edu/webtms_du/Colleges.asp?Term=201125&univ=DREX
转到 URL1 会设置 URL2 所需的 cookie。我成功地接收和发送这样的cookie:
curl -c recd url1
curl -v -b recd url2
但是,我得到的响应与我在浏览器中看到的不同。基本上,我的浏览器向我显示了一个专业列表,而curl 得到一个页面,而不是专业列表,它有
<FONT COLOR=red size=5> The lists of subjects are not available online for the selected term at this time.</FONT><FONT COLOR=red size=5> Please check back again later.</FONT>
我想他们可能正在检查用户代理,所以我也尝试了这个:
curl -b recdcookies --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" https://duapp3.drexel.edu/webtms_du/Colleges.asp?Term=201125&univ=DREX
但同样出乎意料的反应。
是什么导致浏览器和 curl 之间的输出不同?至于curl -v 显示它只设置一个cookie。是因为它们是https 页面,我需要向curl 添加另一个参数吗?
【问题讨论】:
-
您是否在第二个请求中包含第一个请求的 cookie?
-
@nikc.org 我是。最初,当我不是时,返回的页面有一条消息说“无效的参数......”。现在它返回但没有课程列表,所以我认为 cookie 运行良好
-
也许是一个愚蠢的问题,但是在命令行中,您是否将 url 放在引号中?未引用时(在后台运行),& 符号具有特殊含义。我可以得到课程列表就好了。
-
gah,这可能是问题所在。我没有使用引号
-
@nikc.org:确实,这就是问题所在。小心将其发布为答案,以便我接受