第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

1.注册中国大学MOOC
2.选择北京理工大学嵩天老师的《Python网络爬虫与信息提取》MOOC课程
3.学习完成第0周至第4周的课程内容,并完成各周作业
4.提供图片或网站显示的学习进度,证明学习的过程。

第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第1张图片第3次作业-MOOC学习笔记:Python网络爬虫与信息提取_第2张图片

5.写一篇不少于1000字的学习笔记,谈一下学习的体会和收获。

  经过这两周对嵩天老师的《Python网络爬虫及信息提取》的学习,我明白了:

  网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。通俗一点说就是爬取某个网站上的你想要的某些数据,然后保存起来。

  爬虫主要使用的是java和python语言,java语言是Python语言写爬虫的最大竞争对手。Python与java相比有很多优点,利用python写爬虫程序比较简洁,高效。python含有第三方urllib库,一个最基本的网络请求库,是用来写爬虫的好工具。学习用Python语言爬虫必须要对python的基本语法规则要有一定的了解。

  了解了什么是Requests

  Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库;

  相比urllib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求;

  请求方式:

  GET: 请求指定的页面信息,并返回实体主体。
  HEAD: 只请求页面的首部。
  POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
  PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  DELETE: 请求服务器删除指定的页面。
  get 和 post比较常见 GET请求将提交的数据放置在HTTP请求协议头中
  POST提交的数据则放在实体数据中

  robots协议使用原则: Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。Robots协议的本质是网站和搜索引擎爬虫的沟通方式,用来指导搜索引擎更好地抓取网站内容,而不是作为搜索引擎之间互相限制和不正当竞争的工具。

  Beautiful Soup库:Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

  Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

  Tag

  NavigableString

  BeautifulSoup

  Comment

 

  (1)Tag

  Tag就是 HTML 中的一个个标签,例如:

  The Dormouse's story

  用 BeautifulSoup 可以很方便地获取 Tags:

  print soup.title

  print soup.head

  print soup.a

  print soup.p

  print type(soup.a)

  这种方式查找的是在所有内容中的第一个符合要求的标签。

  对于 Tag,它有两个重要的属性,name 和 attrs :

  print soup.name

  print soup.a.name

  print soup.attrs

  print soup.p.attrs #在这里,我们把 p 标签的所有属性打印输出了出来,得到的类型是一个字典。

  print soup.p['class'] #单独获取某个属性

  print soup.p.get('class') ##单独获取某个属性 跟上面一样的

  可以对这些属性和内容等等进行修改:

  soup.p['class']="newClass"

  可以对这个属性进行删除:

  del soup.p['class']

  (2)NavigableString

  得到了标签的内容用 .string 即可获取标签内部的文字,例如:

  print soup.p.string

  来检查一下它的类型:

  print type(soup.p.string)

  #

  可以看到它的类型是一个 NavigableString,翻译过来叫 可以遍历的字符串。

  (3)BeautifulSoup

  BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称:

  print type(soup.name)

  #

  print soup.name

  # [document]

  print soup.attrs

  #{} 空字典

  (4)Comment

  Comment 对象是一个特殊类型的 NavigableString 对象,其实输出的内容仍然不包括注释符号。我们找一个带注释的标签:

  print soup.a

  print soup.a.string

  print type(soup.a.string)

  运行结果如下:

  

   Elsie

  

  a 标签里的内容实际上是注释,但是如果我们利用 .string 来输出它的内容,我们发现它已经把注释符号去掉了,所以这可能会给我们带来不必要的麻烦。

  我们打印输出下它的类型,发现它是一个 Comment 类型,所以,我们在使用前最好做一下判断,判断代码如下:

  if type(soup.a.string)==bs4.element.Comment:

      print soup.a.string

  上面的代码中,我们判断了它的类型,是否为 Comment 类型。

  经过了这两周的学习,我已经初步的了解了Python网络爬虫,未来我将会努力的探索这片位置的海洋!

 

你可能感兴趣的:(第3次作业-MOOC学习笔记:Python网络爬虫与信息提取)