数据抓取
目前社交网站的公开数据很多,为研究者检验自己的理论模型提供了很多便利。例如斯坦福的社会网络分析项目就分享了很多相关的数据集。社交网站为了自身的发展,往往也通过各种合作项目(例如腾讯的“犀牛鸟项目”)和竞赛(例如Facebook通过Kaggle竞赛公布部分数据)向研究者分享数据。
但是,有时候研究者还是被迫需要自己收集数据。受限于网站本身对于信息的保护和研究者自身的编程水平,互联网数据的抓取过程依然存在众多问题。以下,我们将从三个方面着手简要介绍使用Python进行数据抓取的问题:直接抓取数据、模拟登录抓取数据、基于API接口抓取数据。
一、直接抓取数据
通常的数据抓取遵循可见即可得的规律,即可以观察到的,就可以被抓取。对于网页内容的抓取,可以是把整个网页都存下来,回头再清洗。这样做比较简单有效,但是还是回避不了之后的从html文件中进行的数据提取工作。在下面的例子当中,我们将尝试抓取百度新闻页面(http://news.baidu.com/)的热点新闻。在这个例子当中,我们要使用urllib2这个类库来获取该网页的html文本。
在获取html之后,我们将使用一个流行的类库BeautifulSoup来解析html并提取我们需要的信息。现在的BeautifulSoup已经发展到第四个版本。可以使用easy_install或者pip install的方法安装。如果读者使用的是Spyder的话,可以点击Tools--Open command prompt。然后,在打开的命令窗口中输入:easy_install beautifulsoup4 就可以了。
easy_install beautifulsoup4