天天看点

python网络爬虫——基本概念及代码实现1

Python网络爬虫

爬虫是什么?

网络爬虫就是一段抓取网页的程序,基本操作就是抓取网页,每个网页都是有一段段代码组成的,爬虫的工作就是通过网页的链接地址寻找网页。

URI和URL的区别

Web上每一种资源(文档、视频、图片、程序)都由一个通用资源标识符(URI)进行定位。URL是URI的一个子集,二者的区别在于,URI表示请求服务器的路径,定义这么一个资源,而URL同时说明要如何访问这个资源(http://)。

URL的格式由三部分组成: 

①第一部分是协议(或称为服务方式)。

②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

③第三部分是主机资源的具体地址,如目录和文件名等。

第一部分和第二部分用“://”符号隔开,

第二部分和第三部分用“/”符号隔开。

第一部分和第二部分是不可缺少的,第三部分有时可以省略。

URL的一般格式为(带方括号[]的为可选项):

protocol://hostname[:port]/path/[;parameters][?query]

爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它 进行进一步的处理。

网页抓取

就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源。除了"http:",URL同样可以使用"ftp:","file:"等等来替代。HTTP是基于请求和应答机制的:客户端提出请求,服务端提供应答。

Python2中使用的是urllib2和urllib。

Python3中使用的是urllib,urllib五个子模块error、parse、request、response、robotparser。

通过urlopen函数将百度网页的代码提取到本地

Python2

import urllib2
response = urllib2.urlopen('http://www.baidu.com/')
html = response.read()
print html
           

Python3

import urllib.request
response = urllib.request.urlopen('http://www.baidu.com/')
html = response.read()
print(html.decode('UTF-8'))#转换为UTF-8,速度就会变快。
           

创建一个request对象,返回一个response对象

Python2

import urllib2  
req = urllib2.Request('http://www.baidu.com')  
response = urllib2.urlopen(req)  
the_page = response.read()  
print the_page
           

Python3

import urllib.request
req = urllib.request.Request('http://www.baidu.com')
response = urllib.request.urlopen(req)
the_page = response.read()
print(the_page.decode('UTF-8'))#转换为UTF-8,速度就会变快。</span>