A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© caterpillar 初级黑马   /  2019-6-18 09:14  /  1866 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

所谓的静态的网页,就是网页编写者会将网页数据都直接写入到html中,对于这样的网页,一般而言是无法进行数据更新的,也就是说你今天打开这个网页获得的信息和你一个月后在这个网页获得信息是一样的,不会有任何的改变。
所谓的动态的网页,就是网页编写者只是将网页写成一个框架,具体的数据会放在服务器的数据库了。就比如说,网页是一个书架,你希望获得金融类的书籍,那你就可以向服务器发出这么一个请求——“我希望获得金融类的书籍”,那么服务器就会返回相应的书籍,书架上就会呈现相应的金融类的书籍。这里的请求实际上就是http请求,也就是网页作为前端与服务器作为后端之间的信息通信。动态网页是目前比较常见的网页形式,因为大数据的存在,网页逐渐成为一种呈现的方式,具体的数据会保存在服务器的数据库中,并且不断地改变着。
对于静态网页,就不多说了,太简单了。只要用requests库直接把html爬下来,然后用正则表达式匹配即可。但是到了目前互联网发展阶段,已经很少有静态网页了。如果你遇到要爬虫静态网页,那你一定是非常幸福了。
例如这样的网页:你的名字 就可以认为是一个静态网页。
动态网页是比较常见的爬虫目标,这里我给出一些比较常见的爬虫方法,仅供参考。
一般来说,要爬虫的内容都是在格式上具有一定的重复性,但同时数据量又非常大。如果你曾经做过网页开发,你就会明白网页开发者对于这样的数据,一般都会采取从服务器发数据包到前端,在前端解析数据的方式来实现,于是这就给了爬虫者巨大的便利。因为一旦我找到了数据包的请求方式,我就可以仿照前端发送相同的请求,来获得相应的JSON数据。
这样请求一般可以认为是http请求,http请求主要分为两种形式:
* Get方法:比如说我们在浏览器上输入一个网络地址,就是发起一个Get方法的请求。这种网络地址就是URL。
* Post方法:在爬虫中不常见,故不详细介绍
对于爬虫者来说,只需要知道Get方法是如何传递参数的即可。在前文,我提到网页就是一个书架,如果我希望书架上的书都是金融类的书,那么我就需要向服务器发送一个需要书的请求,并且这个请求中的一个参数就是“金融类”,于是服务器就能明白我想要的书是金融类的书。
当然,并不是所有的网页都是用发送请求的方式来获得数据的。例如,雪球网 这样的网页,我个人是花了很长时间也没有找到相应的请求。其实也是很容易理解的,像发送请求的话,一般都是结构化的数据,像这种文章就不是结构化的数据,所以不是发送请求的方式,也是可以理解的。但具体这个网页是怎么写,我个人也无法找到合适的解释。
那么,在这种情况下,就需要采取别的方法来进行网络爬虫了。这里我认为最简单的方法就是使用Selenium。具体的安装不在此赘述。
像雪球网 这个网站的文章,就可以这么写了。代码就非常简单了。Selenium其实本来是用来做网站的自动化测试的,他会模拟浏览器的行为,所以可以直接获得浏览器渲染后的最终结果,也就是说,不管这个网站是什么方式写成的,采用Selenium获得的信息,都是我们正常在浏览器中能够看到的最终结果。换句话说,只要学会Selenium,你就爬虫任何的网站!但是,Selenium的速度非常地慢,所以我个人的爬虫策略是,如果能找到http请求,优先使用http请求,如果不能,就使用Selenium。


2 个回复

倒序浏览
Between Heaven and Earth, every single step of ours is at full throttle, while every single road is twisting and turning. There is no constant view……我们奔走于天地间,每一次跋涉都全力以赴,而每一条道路都是曲折回环。路上没有不变的风景,没有笔直的坦途
回复 使用道具 举报
今天很残酷 明天更残酷 后天很美好,坚持:5_229:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马