python 只抓到部分数据?

2015-12-11 21:38:07 +08:00
 pzy

刚接触 python ,用 python 抓教务系统成绩,但只抓到部分数据,成绩位于 html 的一个 table 里,但只抓到了表头,不知道为什么?
源代码为这样:
<table class="datelist" cellspacing="0" cellpadding="3" border="0" id="Datagrid1" style="DISPLAY:block">
<tr class="datelisthead">
<td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl0','')">学年</a></td><td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl1','')">学期</a></td><td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl2','')">课程代码</a></td><td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl3','')">课程名称</a></td><td>课程性质</td><td>课程归属</td><td>学分</td><td>绩点</td><td>成绩</td><td>辅修标记</td><td>补考成绩</td><td>重修成绩</td><td>开课学院</td><td>备注</td><td>重修标记</td>
</tr><tr>
<td>2012-2013</td><td>1</td><td>103200019</td><td>中国近现代史纲要</td><td>人格与素养课程群必修</td><td> </td><td>2.0</td><td> </td><td>84</td><td>0</td><td> </td><td> </td><td>政治学院</td><td></td><td></td>
</tr><tr class="alt">
<td>2012-2013</td><td>1</td><td>103200059</td><td>形势与政策 1(上)</td><td>人格与素养课程群必修</td><td> </td><td>0.25</td><td> </td><td>84</td><td>0</td><td> </td><td> </td><td>政治学院</td><td></td><td></td>
</tr><tr>
<td>2012-2013</td><td>1</td><td>104200009</td><td>军训</td><td>人格与素养课程群必修</td><td> </td><td>2.0</td><td> </td><td>81</td><td>0</td><td> </td><td> </td><td>武装部</td><td></td><td></td>
</tr><tr class="alt">
<td>2012-2013</td><td>1</td><td>104200019</td><td>体育-1</td><td>人格与素养课程群必修</td><td> </td><td>2.0</td><td> 3.20</td><td>83</td><td>0</td><td> </td><td> </td><td>体育学院</td><td></td><td></td>
</tr><tr>
<td>2012-2013</td><td>1</td><td>105100009</td><td>大学英语(1)</td><td>表达与理解课程群必修</td><td> </td><td>4.0</td><td> 4.00</td><td>90</td><td>0</td><td> </td><td> </td><td>外国语学院</td><td></td><td></td>

但抓到的数据为
<table class="datelist" cellspacing="0" cellpadding="3" border="0" id="Datagrid1" style="DISPLAY:block">
<tr class="datelisthead">
<td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl0','')">学年</a></td><td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl1','')">学期</a></td><td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl2','')">课程代码</a></td><td><a href="javascript:__doPostBack('Datagrid1$_ctl1$_ctl3','')">课程名称</a></td><td>课程性质</td><td>课程归属</td><td>学分</td><td>绩点</td><td>成绩</td><td>辅修标记</td><td>补考成绩</td><td>重修成绩</td><td>开课学院</td><td>备注</td><td>重修标记</td>
</tr>
</table>
表格直接结束了,后面成绩部分不显示,这是为什么啊?

1887 次点击
所在节点    Python
2 条回复
bdbai
2015-12-12 09:21:16 +08:00
有没有漏掉鉴权之类的东西,比如用户登录、 Cookie 这些?
13k
2015-12-19 11:13:22 +08:00
后面部分是要看 js 生成的,需要类似 selenium+浏览器来抓
或者直接看 javascript:__doPostBack('Datagrid1$_ctl1$_ctl3','')发起什么请求,然后直接 python 构造这个请求来获取数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/242927

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX