之前,我们已经爬过表格型的数据,所以对表格数据的结构应该不会太陌生,如果忘了,可以再看一下这篇文章:https://www.makcyun.top/web_scraping_withpython2.html
我们这里以上面的2018年中报的业绩报表为例,查看一下表格的形式。
网址url:http://data.eastmoney.com/bbsj/201806/lrb.html,bbsj
代表年报季报,201803
代表2018年一季报
,类似地,201806表示年中报;lrb
是利润表
的首字母缩写,同理,yjbb
表示业绩报表
。可以看出,该网址格式很简单,便于构造url。
接着,我们点击下一页
按钮,可以看到表格更新后url没有发生改变,可以判定是采用了Javscript。那么,我们首先判断是不是采用了Ajax加载的。方法也很简单,右键检查或按F12,切换到network并选择下面的XHR,再按F5刷新。可以看到只有一个Ajax请求,点击下一页也并没有生成新的Ajax请求,可以判断该网页结构不是常见的那种点击下一页或者下拉会源源不断出现的Ajax请求类型,那么便无法构造url来实现分页爬取。
XHR选项里没有找到我们需要的请求,接下来试试看能不能再JS里找到表格的数据请求。将选项选为JS,再次F5刷新,可以看到出现了很多JS请求,然后我们点击几次下一页,会发现弹出新的请求来,然后右边为响应的请求信息。url链接非常长,看上去很复杂。好,这里我们先在这里打住不往下了。
可以看到,通过分析后台元素来爬取该动态网页的方法,相对比较复杂。那么有没有干脆、直截了当地就能够抓取表格内容的方法呢?有的,就是本文接下来要介绍的Selenium大法。
3. Selenium知识
Selenium 是什么?一句话,自动化测试工具。它是为了测试而出生的,但在近几年火热的爬虫领域中,它摇身一变,变成了爬虫的利器。直白点说, Seleninm能控制浏览器, 像人一样"上网"。比如,可以实现网页自动翻页、登录网站、发送邮件、下载图片/音乐/视频等等。举个例子,写几行python代码就可以用Selenium实现登录IT桔子,然后浏览网页的功能。
怎么样,仅用几行代码就能实现自动上网操作,是不是挺神奇的?当然,这仅仅是Selenium最简单的功能,还有很多更加丰富的操作,可以参考以下几篇教程:
参考网站:
Selenium官网: https://selenium-python.readthedocs.io/
SeleniumPython文档(英文版):http