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>