Python3 对网页进行简单爬虫操作


一直想好好学习一下Python爬虫,之前断断续续的把Python基础学了一下,悲剧的是学的没有忘的快哭。只能再次拿出来滤了一遍,趁热打铁,借鉴众多大神的爬虫案例,加入Python网络爬虫的学习大军~~~ 

爬虫之前 


在着手写爬虫之前,要先把其需要的知识线路理清楚。

第一:了解相关Http协议知识


HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP的请求响应模型
HTTP协议永远都是客户端发起请求,服务器回送响应。
这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
工作流程
一次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

第二:了解Python中urllib库


Python2系列使用的是urllib2,Python3后将其全部整合为urllib;我们所需学习的是几个常用函数。细节可去官网查看。

第三:开发工具


  • Python自带编译器 – IDLE,十分简洁;
  • PyCharm – 交互很好的Python一款IDE;
  • Fiddler – 网页请求监控工具,我们可以使用它来了解用户触发网页请求后发生的详细步骤;

简单网页爬虫

代码

  1. ”’ 
  2. 第一个示例:简单的网页爬虫 
  3.  
  4. 爬取豆瓣首页 
  5. ”’  
  6.   
  7. import urllib.request  
  8.   
  9. #网址  
  10. url = ”http://www.douban.com/”  
  11.   
  12. #请求  
  13. request = urllib.request.Request(url)  
  14.   
  15. #爬取结果  
  16. response = urllib.request.urlopen(request)  
  17.   
  18. data = response.read()  
  19.   
  20. #设置解码方式  
  21. data = data.decode(’utf-8’)  
  22.   
  23. #打印结果  
  24. print(data)  
  25.   
  26. #打印爬取网页的各类信息  
  27.   
  28. print(type(response))  
  29. print(response.geturl())  
  30. print(response.info())  
  31. print(response.getcode())  
'''
第一个示例:简单的网页爬虫

爬取豆瓣首页
'''

import urllib.request





#网址 url = "http://www.douban.com/" #请求 request = urllib.request.Request(url) #爬取结果 response = urllib.request.urlopen(request) data = response.read() #设置解码方式 data = data.decode('utf-8') #打印结果 print(data) #打印爬取网页的各类信息 print(type(response)) print(response.geturl()) print(response.info()) print(response.getcode())

结果

截取部分结果如下图:

                </div>
阅读更多

没有更多推荐了,返回首页