总的来说,爬虫是比较有趣的。
始于看到这篇分析从数据角度解析福州美食,止于完成从数据角度解析刘禹锡诗里都写了什么的分析。
然后就有接下来的总结,python爬虫系列
爬虫简介
互联网包含了迄今为止最多的数据集,我想这句话没有问题。它们以嵌入的方式呈现在网站的结构和样式当中,供我们公开访问大部分时候。但是这些数据又难以复用,所以必须得抽取出来使用,从网页中抽取数据的过程便称为网络爬虫。
爬虫调研
首先,我们得认识到爬取一个网站的数据时,自己是一个访客,应当约束自己的抓取行为,限速和数据商用等。其次,在深入爬取之前,我们需要对目标网站的规模和结构进行一定了解。
1)检查robot.txt
这个文件定义了爬取网站存在的限制,良好的网络公民都应该遵守这些限制,这也是避免爬虫被封禁的有效途径之一
1 #section1 2 User-agent: * 3 Disallow: /subject_search 4 Disallow: /amazon_search 5 Disallow: /search 6 Disallow: /group/search 7 Disallow: /event/search 8 Disallow: /celebrities/search 9 Disallow: /location/drama/search 10 Disallow: /forum/ 11 Disallow: /new_subject 12 Disallow: /service/iframe 13 Disallow: /j/ 14 Disallow: /link2/ 15 Disallow: /recommend/ 16 Disallow: /trailer/ 17 Disallow: /doubanapp/card 18 Sitemap: https://www.douban.com/sitemap_index.xml 19 Sitemap: https://www.douban.com/sitemap_updated_index.xml 20 # Crawl-delay: 5 21 22 #section2 23 User-agent: Wandoujia Spider 24 Disallow: /
以上是豆瓣网站的robot.txt文件的内容,section1规定,不论哪种用户代理,两次下载请求之间应延迟5秒抓取,避免服务器过载;还列出了一些不允许爬取的链接,以及定义了sitemap文件。section2规定,禁止用户代理为Wandoujia的爬虫爬取该网站
2)检查网站地图
网站提供的Sitemap文件,即网站地图,可以帮助爬虫定位网站最新的内容,避免爬取每一个网页。该文件比较大,都采取的是压缩方式展示,所以还需要解压缩,才能看到比较详细的内容
3)识别网站所用技术
构建网站的技术会影响如何爬取,python的builtwith库可以帮助了解这一点。
1 >>> import builtwith 2 >>> builtwith.parse("https://www.douban.com") 3 {u‘javascript-frameworks‘: [u‘jQuery‘], u‘tag-managers‘: [u‘Google Tag Manager‘], u‘analytics‘: [u‘Piwik‘]}
4)估算网站大小
目标网站的大小会影响我们爬取的方式,比较小的网站,效率就没有那么重要,而上百千万级别的网页站点,则需要考虑分布式下载方式,不然串行下载,可能需要持续好久才能完成。
爬虫准备
清楚爬取的目的。爬取的过程大致分为:
1)爬取:下载网页(requests,urllib,urllib2),解析网页(re,lxml,BeautifulSoup,选其一)
2)存储:MongoDB
3)分析:暂略(忏愧做的数据分析都十分浅)
4)展示:Echarts
爬虫需要熟悉或安装的第三方库
1)请求和响应:requests,urllib,urllib2
注:在python2.7语法里,urllib和urllib2是两个不同的内置模块,python3合二为一了。两者的区别在于urllib2可接收一个Request对象,并以此可以设置一个headers,但urllib只能接收url;urllib可提供进行urlencode方法,urllib2不具有
2)提取数据:re,lxml,BeauitifulSoup
3)数据格式:json,xml
4)数据库连接:pymongo
5)爬虫框架:Scrapy
爬虫工具准备
1)python2.7:自带IDEL编辑器,使用pip包管理工具,安装第三方库。
常见命令有:pip list #查看所有已安装的
pip install 第三方库名 #安装
pip uninstall 第三方库名 #卸载
pip install --upgrade 第三方库名 #升级
2)Anaconda2:可以看做时Python的一个集成安装,安装它后就默认安装了python、IPython、集成开发环境Spyder和众多的包和模块。非常方便,注意是非常方便。使用conda包管理工具,安装第三方库。常用命令和pip差不多
注:人生苦短,使用Anaconda。自带numpy,pandas,matplotlib第三方库,用来数据分析,不用考虑各个库之间的依赖关系非常赞。
原文:http://www.cnblogs.com/Ryana/p/6147766.html