网络爬虫学习总结(基于python)
摘要:笔者作为一个网络爬虫爱好者,经过一段时间的自学,只能算入门水平。虽然笔者水平一般,但对最近的学习过程,也有了一定的总结。学习网络爬虫的好处有很多:可以增加网络相关知识,提高浏览器使用水平,自动获取网络资源等。
00 静态网页
爬取静态网页分为两步:第一,获取网页的HTML文档,第二,解析HTML文档。
获取HTML文档的方法包含:urllib,urllib2,requestes;其中推荐requestes方法。
解析HTML文档,推荐BeautifulSoup方法。解析HTML文档的主要工作就是定位页面元素,然后获得这些元素。
01 动态网页
所谓动态网页,就是网页上显示的内容不全部包含在当前HTML文档中,这样使用上文静态网页爬取方法则可能无法获取想要的信息。
爬取动态网页的方法有:Selenium,Pyppeneer,PhantomJS,Mechanize等;笔者学习的是Selenium,该方法模拟用户驱动浏览器,等需要的内容在浏览器中都加载完成,再爬取所需信息。学习Selenium方法的重点之一也是页面元素定位,包含各种定位方式。
02 爬虫框架
为了提高爬虫编写效率,存在很多爬虫框架,爬虫框架的主要作用就是写尽量少的代码,完成尽量多的工作。提高爬虫程序编写的效率。
03 数据库
爬取到数据后需要存放,必然会使用到数据库。比如SQL数据库,比如MySQL,PostgreSQL等;也能使用NoSQL,比如MongoDB。
04 反爬虫
如果每个网站都没有反爬虫,那爬取网络资源真的太简单了。然而现实是,网站并不希望程序来自动访问服务器。所以各种反爬技术无疑提高了爬取信息的难度,提高了网络爬虫的门槛。可以说,网络爬虫的基本方法很简单,学习怎么应付反爬虫才是爬虫水平的彰显。
05 高效率
如果我们只是爬取100,1000个网页,那谈不上爬虫运行效率问题。但如果我们需要爬取百万个网页。这就要学习分布式爬虫,多线程,多进程等概念了。这些技术主要为海量爬虫任务服务。
结语:最大的网络爬虫是:搜索引擎!