微笔记:Python开发简单爬虫

原文信息
标题:Python开发简单爬虫
作者:疯狂的蚂蚁crazyant
链接:http://www.imooc.com/learn/563

微笔记:Python开发简单爬虫_第1张图片
Python爬虫

原文大意

教程解释了什么是网络爬虫,爬虫的作用,以及爬虫的基本技术架构。最后通过抓取百度百科1000个词条,进行示例讲解。

教程的的目录具体如下:

  1. 爬虫技术的含义和存在价值

  2. 爬虫技术架构

  3. 组成爬虫的关键模块:URL管理器、HTML下载器和HTML解析器

  1. 实战抓取百度百科1000个词条页面数据的抓取策略设定、实战代码编写、爬虫实例运行
  1. 一套极简的可扩展爬虫代码,修改本代码,你就能抓取任何互联网网页!

教程不足

教程很清晰的讲解了Python爬虫的实现过程,以及程序所需模块、代码编写的讲解,也都简单易懂。但是教程还是有些不足:

  • 应用场景可以更生动。作者在解释什么是爬虫的时候,通过描述网状的互联网,数据的交织,引出了“爬”的意义。然而凡是来学习爬虫程序的人,大致了解了爬虫的作用:抓取数据。所以应用场景稍显生硬。
  • 部分术语讲解不够浅显。作者从开发者的角度编写了此教程,很多术语上讲的不够浅显。比如URL管理、HTML下载器、HTML解析器。透过目录,比较难联想到这一节内容要讲什么知识点,这些知识点在爬虫过程中的角色。

故事联想

1

爬虫程序最直接的目的就是抓取数据,那么什么时候我们需要抓取数据呢?

  • 提升阅读体验。很多免费电影资源的网站上,有各种淫秽的、恶心的广告。这个时候,可以通过爬虫程序,将电影资源抓取下来,重新建立一个HTML页面,从根本上去掉广告,提升阅读体验。
  • 批量抓取数据。做PPT查找高清大图的时候,图片太多会一页一页显示,来回翻页下载不方便。这个时候,使用爬虫程序,自动翻页,自动抓取网页中所有的图片或者文字资源。
  • 绕过限制抓取数据。豆瓣fm可以精准的推送我喜欢的音乐,但是豆瓣不提供mp3下载,根据歌名一个个搜索下载非常麻烦。这个时候,使用爬虫程序,自动查询收藏的歌曲,自动搜索下载mp3资源。

2

爬虫程序从根本上来讲,就是一个批量化、自动、抓取网页数据的程序。

所以理论上,只要能对HTML网页进行下载、解析的计算机语言,都可以实现网络爬虫,比如JavaScript和PHP。

Python不是网络爬虫的独门技术,网络爬虫也不是Python的唯一功能,Python还可以像PHP一样,实现webApp后台搭建。

Python之所以成为搭建推崇的爬虫语言,是因为它的易用性,以及它所包含的大量第三方模块,让开发者在实现需求时,更加的方便快捷。

3

作者的教程,如果对应用场景进行优化,在使用网黄阿文类似的风格,对PPT进行生动形象的完善,一定能够成为Python网络爬虫教程的经典。

拆为己用

1

Python网络爬虫的流程,大致分为:

  1. 下载目标网页的HTML代码。使用Python自带的urllib2模块,实现指定网页的下载,并返回完整的HTML代码。
  2. 对HTML代码进行解析。分析下载到的HTML代码,查看我们需要的信息,保存在哪个节点下,读取该节点的内容。使用Beautifulsoup模块,可以将HTML代码转换成BeautifulSoup对象,方便的获取信息。
    这其中,可以使用正则表达式,对复杂的查询规则,进行精确查找。
  3. 组织目标信息,生成抓取输出页面。使用Python的IO函数file.write()函数,基于HTML标签,将抓取到的信息,写入到指定的HTML文件中。

2

在爬虫过程中,需要注意以下几点:

1. 避免页面中的链接相互跳转,形成爬虫死循环

爬虫程序可以遍历页面中所有的链接,自动抓取,如果链接引用到历史链接,来回跳转,很容易出现爬虫死循环。这也是教程中所说的URL管理器的作用。

2.解决登录限制、代理问题

有的页面,需要用户登录之后,才会显示对应的信息。

有的页面,只在手机浏览器中,才显示数据。

针对以上两种限制,在编写爬虫数据时,需要提前做好处理。

  • 针对代理问题。使用req = urllib2.request(url)函数请求,使用add_header()方法,添加网页代理(也就是浏览器模拟),然后使用urlopen(request)获取网页代码。
  • 针对登录问题。需要使用cookielib模块,构建cookie数据模拟用户登录,具体请参考原文链接。

你可能感兴趣的:(微笔记:Python开发简单爬虫)