我们知道,因为一些原因我们需要在网上搜集一些数据。一般的手动方法不仅效率低而且准确率不能够保证,所以爬虫程序的出现就满足了我们的需求。关于爬虫程序,主要功能就是爬取网页的有用信息,所以按照我所遇到过的情形,我主要分作三个方面来介绍。
第一,静态网页的数据爬取。
静态网页的数据爬取,简单的来说就是在网页源码中进行过滤。筛选出我们需要的信息,在这里我推荐使用BeautifulSoup。这个类库的使用很简单。
(1)安装,安装可以使用pip,但是要注意安装bs4,不可错安装成BeautifulSoup.
(2)它的使用很简单,如下所示:
在构建了一个BeautifulSoup对象后,我们就可以使用这个对象进行数据的筛选了。例如使用findAll这个函数:
这个函数的作用简单的来说就是查找所有符合条件标签。除了上面介绍的方法外,BeautifulSoup还有其他的一些方法,比如说find等等,关于这些方法的使用我在这里就不介绍,有兴趣的话,大家可以参考Beautiful的官方文档。
第二,动态网页的数据爬取。
关于动态网页的数据爬取,这种情况相对于第一种静态网页,情况会有点复杂。比如说,当我们的网页数据有些是通过js动态加载的话,这个时候应该怎么处理??我这里提供了以下几种方法.
(1)熟悉前端的人,可以自己了解js的源码后,然后针对性的进行数据爬取。但是我这里对这种方法不做详细的介绍,因为本人对前端不太熟悉,如果有同学熟悉的话,可以发信息给我。
(2)这种方法主要的原理,就是模仿浏览器,先把动态的数据请求加载完成后,然后对加载完成的数据进行爬取。这里有很多的浏览器驱动,例如chorme,firefox等。这里我推荐大家使用PhantomJS,这是一种无界面的浏览器环境。可以满足我上面提到的需求。使用方法如下:
这里的path是PhantomJS所在的位置,PhantomJS可以在网上下载。然后
通过xpath的方式查找数据。
第三,除了上面介绍的情况外,还有一种情况就是会出现url转发的情况,我们需要的资源,也许就是在另一个页面之上,这个时候,如果我们能够弄清楚这个url的话,我们就能不用管网页上的相关繁琐代码,直接请求这个url获取我们需要的资源,这样子的话事半功倍。要弄清楚url,这里就需要大家了解一些浏览器的操作了,我这里推荐使用chorme浏览器,通过F12键。大家可以通过这个网页检查功能获取我们需要的url参数,例如说。
这是百度贴吧的回复信息。
这里就是请求头的一些信息,其中tid,fid,pn,see_lz就是我们所需要的参数,通过这些参数我们就能知道完整的url是怎么构造的,这样字的话,我们就能直接通过访问网页的是形式爬取信息了。
如果大家对相关话题感兴趣的话,可以关注yiyele-xxq(程序猿技术交流)公众号。