收藏 分享(赏)

整理的用Python编写的爬虫文档.pdf

上传人:刘岱文 文档编号:4992 上传时间:2018-05-15 格式:PDF 页数:111 大小:8.20MB
下载 相关 举报
整理的用Python编写的爬虫文档.pdf_第1页
第1页 / 共111页
整理的用Python编写的爬虫文档.pdf_第2页
第2页 / 共111页
整理的用Python编写的爬虫文档.pdf_第3页
第3页 / 共111页
整理的用Python编写的爬虫文档.pdf_第4页
第4页 / 共111页
整理的用Python编写的爬虫文档.pdf_第5页
第5页 / 共111页
点击查看更多>>
资源描述

1、1 Python 爬虫入门教程Python 网络爬虫(一):网络爬虫的定义网络爬虫,即 Web Spider ,是一个很形象的名字。把互联网比喻成一个蜘蛛网, 那么 Spider 就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页, 这样一直循环下去, 直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站, 那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。网络爬虫的基本操作是抓取网页

2、。那么如何才能随心所欲地获得自己想要的页面?我们先从 URL 开始。二、浏览网页的过程抓取网页的过程其实和读者平时使用 IE 浏览器浏览网页的道理是一样的。比如说你在浏览器的地址栏中输入 这个地址。打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。2 HTML 是一种标记语言,用标签标记内容并加以解析和区分。浏览器的功能是将获取到的 HTML 代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。三、 URI 和 URL 的概念和举例简单的来讲, URL 就是在浏览器端输入的 http:/ 这个字符串。在理

3、解 URL 之前,首先要理解 URI 的概念。什么是 URI?Web 上每种可用的资源,如 HTML 文档、图像、视频片段、程序等都由一个通用资源标志符 (Universal Resource Identifier , URI)进行定位。URI 通常由三部分组成:访问资源的命名机制;存放资源的主机名;资源自身 的名称,由路径表示。如下面的 URI:http:/ HTTP 协议访问的资源,位于主机 上,通过路径“ /html/html40 ”访问。3 四、 URL 的理解和举例URL 是 URI 的一个子集。它是 Uniform Resource Locator 的缩写,译为“统一资源定位 符

4、”。通俗地说, URL 是 Internet 上描述信息资源的字符串,主要用在各种WWW 客户程序和服务器程序上。采用 URL 可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL 的一般格式为 (带方括号 的为可选项 ):protocol :/ hostname:port / path / ;parameters?query#fragmentURL 的格式由三部分组成:第一部分是协议 (或称为服务方式 )。第二部分是存有该资源的主机 IP 地址 (有时也包括端口号 )。第三部分是主机资源的具体地址,如目录和文件名等。第一部分和第二部分用“ :/ ”符号隔开,第二部分

5、和第三部分用“ /”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。五、 URL 和 URI 简单比较URI 属于 URL 更低层次的抽象,一种字符串文本标准。换句话说, URI 属于父类,而 URL 属于 URI 的子类。 URL 是 URI 的一个子集。URI 的定义是:统一资源标识符;URL 的定义是:统一资源定位符。4 二者的区别在于, URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源( http:/ )。下面来看看两个 URL 的小例子。1.HTTP 协议的 URL 示例:使用超级文本传输协议 HTTP ,提供超级文本信息服务的资

6、源。例: http:/ 其计算机域名为 。超级文本文件 (文件类型为 .html) 是在目录 /channel 下的welcome.htm 。这是中国人民日报的一台计算机。例: http:/ 其计算机域名为 。超级文本文件 (文件类型为 .html) 是在目录 /talk 下的 talk1.htm 。这是瑞得聊天室的地址,可由此进入瑞得聊天室的第 1 室。2文件的 URL 用 URL 表示文件时,服务器方式用 file 表示,后面要有主机 IP 地址、文件的存取路 径 (即目录 )和文件名等信息。有时可以省略目录和文件名,但“ / ”符号不能省略。例: file:/ 上面这个 URL 代表

7、存放在主机 上的 pub/files/ 目录下的一个文件,文件名是 foobar.txt 。例: file:/ 5 代表主机 上的目录 /pub 。例: file:/ 代表主机 的根目录。爬虫最主要的处理对象就是 URL,它根据 URL 地址取得所需要的文件内容,然后对它 进行进一步的处理。因此,准确地理解 URL 对理解网络爬虫至关重要。Python 网络爬虫(二):利用 urllib2 通过指定的 URL 抓取网页内容版本号: Python2.7.5 , Python3 改动较大,各位另寻教程。所谓网页抓取,就是把 URL 地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使

8、用程序模拟 IE 浏览器的功能,把 URL 作为 HTTP 请求的内容发送到服务器端, 然后读取服务器端的响应资源。在 Python 中,我们使用 urllib2 这个组件来抓取网页。urllib2 是 Python 的一个获取 URLs(Uniform Resource Locators) 的组件。它以 urlopen 函数的形式提供了一个非常简单的接口。最简单的 urllib2 的应用代码只需要四行。我们新建一个文件 urllib2_test01.py 来感受一下 urllib2 的作用:python view plaincopy1. import urllib2 2. response

9、= urllib2.urlopen( http:/ ) 3. html = response.read() 4. print html 6 按下 F5 可以看到运行的结果:我们可以打开百度主页,右击,选择查看源代码(火狐 OR 谷歌浏览器均可),会发现也是完全一样的内容。也就是说, 上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来。这就是一个最简单的 urllib2 的例子。7 除了 “http:“ , URL 同样可以使用 “ftp:“ , “file:“ 等等来替代。HTTP 是基于请求和应答机制的:客户端提出请求,服务端提供应答。urllib2 用一个 Request 对象

10、来映射你提出的 HTTP 请求。在它最简单的使用形式中你将用你要请求的地址创建一个 Request 对象,通过调用 urlopen 并传入 Request 对象,将返回一个相关请求response 对象,这个应答对象如同一个文件对象,所以你可以在 Response 中调用 .read() 。我们新建一个文件 urllib2_test02.py 来感受一下:python view plaincopy1. import urllib2 2. req = urllib2.Request( http:/ ) 3. response = urllib2.urlopen(req) 4. the_page

11、= response.read() 5. print the_page 可以看到输出的内容和 test01 是一样的。urllib2 使用相同的接口处理所有的 URL 头。例如你可以像下面那样创建一个 ftp 请求。python view plaincopy1. req = urllib2.Request( ftp:/ ) 在 HTTP 请求时,允许你做额外的两件事。1. 发送 data 表单数据8 这个内容相信做过 Web 端的都不会陌生,有时候你希望发送一些数据到 URL(通常 URL 与 CGI 通用网关接口 脚本,或其他 WEB 应用程序挂接 )。在 HTTP 中 ,这个经常使用熟知的

12、 POST 请求发送。这个通常在你提交一个 HTML 表单时由你的浏览器来做。并不是所有的 POSTs 都来源于表单,你能够使用 POST 提交任意的数据到你自己的程序。一般的 HTML 表单, data 需要编码成标准形式。然后做为 data 参数传到 Request 对象。编码工作使用 urllib 的函数而非 urllib2 。我们新建一个文件 urllib2_test03.py 来感受一下:python view plaincopy1. import urllib 2. import urllib2 3.4. url = http:/ values = name : WHY , 7.

13、location : SDU , 8. language : Python 9.10. data = urllib.urlencode(values) # 编码工作11. req = urllib2.Request(url, data) # 发送请求同时传 data 表单12. response = urllib2.urlopen(req) #接受反馈的信息13. the_page = response.read() #读取反馈的内容如果没有传送 data 参数, urllib2 使用 GET 方式的请求。GET 和 POST 请求的不同之处是 POST 请求通常有 “副作用 “,它们会由于某

14、种途径改变系统状态 (例如提交成堆垃圾到你的门口 )。9 Data 同样可以通过在 Get 请求的 URL 本身上面编码来传送。python view plaincopy1. import urllib2 2. import urllib 3.4. data = 5.6. data name = WHY7. data location = SDU8. data language = Python9.10. url_values = urllib.urlencode(data) 11. print url_values 12.13. name=Somebody+Here MSIE 5.5; Wi

15、ndows NT)7. values = name : WHY , 8. location : SDU , 9. language : Python 10.11. headers = User-Agent : user_agent 12. data = urllib.urlencode(values) 13. req = urllib2.Request(url, data, headers) 14. response = urllib2.urlopen(req) 15. the_page = response.read() Python 网络爬虫(三):异常的处理和 HTTP 状态码的分类先来说一说 HTTP 的异常处理问题。当 urlopen 不能够处理一个 response 时,产生 urlError 。不过通常的 Python APIs 异常如 ValueError,TypeError 等也会同时产生。HTTPError 是 urlError 的子类,通常在特定 HTTP URLs 中产生。1.URLError通常, URLError 在没有网络连接 (没有路由到特定服务器 ), 或者服务器不存在的情况下产生。这种情况下,异常同样会带有 “reason“ 属性,它是一个 tuple (可以理解为不可变的数组),

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 网络技术 > 后端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报