V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
pzy
V2EX  ›  Python

python 只抓到部分数据?

  •  
  •   pzy · 2015-12-11 21:38:07 +08:00 · 1935 次点击
    这是一个创建于 3270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚接触 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>
    表格直接结束了,后面成绩部分不显示,这是为什么啊?

    2 条回复    2015-12-19 11:13:22 +08:00
    bdbai
        1
    bdbai  
       2015-12-12 09:21:16 +08:00 via iPhone
    有没有漏掉鉴权之类的东西,比如用户登录、 Cookie 这些?
    13k
        2
    13k  
       2015-12-19 11:13:22 +08:00
    后面部分是要看 js 生成的,需要类似 selenium+浏览器来抓
    或者直接看 javascript:__doPostBack('Datagrid1$_ctl1$_ctl3','')发起什么请求,然后直接 python 构造这个请求来获取数据
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:20 · PVG 14:20 · LAX 22:20 · JFK 01:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.