https://wish.wis.ntu.edu.sg/webexe/owa/aus_schedule.main
现有学校某个网址,没有地方让我 post 数据。
用 chrome 观察了 network 也没有突破的地方。有一个 request header
不过在 urllib.request 和 urllib.parse.urlencode()里试过了。没有返回任何结果。
希望大家帮忙看看怎么爬去这个页面后面返回的所有数据。
谢谢大家了
1
tumbzzc 2016-09-01 17:21:51 +08:00
没说清楚具体要什么
|
2
waterhhk 2016-09-01 17:22:10 +08:00
学校内网?
|
4
Shazoo 2016-09-01 17:32:37 +08:00
有啊。
导成 curl 的命令给你: curl 'https://wish.wis.ntu.edu.sg/webexe/owa/AUS_SCHEDULE.main_display1' -H 'Pragma: no-cache' -H 'Origin: https://wish.wis.ntu.edu.sg' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: zh,en-US;q=0.8,en;q=0.6,zh-CN;q=0.4' -H 'Upgrade-Insecure-Requests: 1' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: no-cache' -H 'Referer: https://wish.wis.ntu.edu.sg/webexe/owa/aus_schedule.main' -H 'Connection: keep-alive' --data 'acadsem=2016%3B1&r_course_yr=ACC%3BGA%3B1%3BF&r_subj_code=Enter+Keywords+or+Course+Code&r_search_type=F&boption=CLoad&acadsem=2016%3B1&staff_access=false' --compressed |
6
UnisandK 2016-09-01 17:37:58 +08:00
你是不是跳新窗口 network 没有东西。。刷新一下重新发送数据就有了
挺简单一个 post 连防爬虫都没做。。 |
7
wudaown OP |
8
laoyuan 2016-09-01 17:39:43 +08:00
这种弹出新标签页的,在新标签页点开发者工具然后刷新下,就能看到请求了。
|
9
wudaown OP |
10
laoyuan 2016-09-01 17:43:30 +08:00
点 Headers 看发送的数据,最下面 Form data
|
11
laoyuan 2016-09-01 17:45:16 +08:00
每年开学都要搞搞这一套,我上午还抓山大的课表好看空教室,结果选课系统的“本学期课程查询” 404 了,火大
|
14
UnisandK 2016-09-01 17:49:56 +08:00
这不就是接口。。
这是 Pow 自动生成的 Python 实现 ```python # Install the Python Requests library: # `pip install requests` import requests def send_request(): # Request # POST https://wish.wis.ntu.edu.sg/webexe/owa/AUS_SCHEDULE.main_display1 try: response = requests.post( url="https://wish.wis.ntu.edu.sg/webexe/owa/AUS_SCHEDULE.main_display1", headers={ "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", }, data={ "boption": "CLoad", "r_search_type": "F", "acadsem": "2016;1,2016;1", "r_course_yr": "ACC;GA;1;F", "r_subj_code": "Enter Keywords or Course Code", "staff_access": "false", }, ) print('Response HTTP Status Code: {status_code}'.format( status_code=response.status_code)) print('Response HTTP Response Body: {content}'.format( content=response.content)) except requests.exceptions.RequestException: print('HTTP Request failed') ``` |
18
Shazoo 2016-09-01 19:13:41 +08:00
额, 8 楼说的估计是你这边的根源问题。
找 post 指令啥的,都很简单啦。一看就懂。 |
19
pekingzcc 2016-09-02 10:34:43 +08:00
楼上上说的因该是 paw 吧
|