python-快速使用urllib爬取网页(1)

来源:互联网 发布:ubuntu win7 系统时间 编辑:程序博客网 时间:2024/06/05 02:21

要使用Urllib爬取网页,首先需要导入用到的对应模块
urllib是python自带的模块,不需要下载

import urllib.request

导入了模块后,我们采用以下方法打开并爬取一个网页

file = urllib.request.urlopen("http://www.baidu.com")

此时,我们已经将爬取到的网页赋给了变量file
爬取完后,我们现在可以使用file.read()读取全部内容,也可以使用file.readline()读取一行内容

data = file.read()dataline = file.readline()

我们读取到我们所爬取的百度首页的全部内容和第一行内容了
接着print查看一下

print(data)print(dataline)
字符串变量 = file.read() #读取全部内容列表变量 = file.readlines() #读取全部内容字符串变量 = file.readline() #读取文件的一行内容

我们将爬出的内容存入本地的一个网页(第一种方法)
ps:本地不存在该文件的话,代码自动创建文件
1、将爬取内容赋予一个变量
2、以写入的方式打开本地文件
3、将变量的值写入本地文件 例:D:/python3.5/1.html
4、关闭改文件

fhandle = open("本地文件地址",“wb”)fhandle。write(data)fhandle,close()

打开本地html文件,发现我们已经将百度的内容爬取到了本地,只不过图片没有爬过来而已
我们将爬出的内容存入本地的一个网页(第二种方法)
ps:本地不存在该文件的话,代码自动创建文件

filename = urllib.request.urlretrieve("http://www.baidu.com",filename="D:/python3.5/2.html")

Urlretrive执行过程中,会产生一些缓存,我们如果想要清楚这些缓存信息,可以使用urlcleanup()进行清除

urllib.request.urlcleanup()

返回与当前环境的有关的信息

a = file.info()print(a)

获取当前爬取网页的状态码,返回200为正确

b = file.getcode()print(b)

获取所爬取的网页的额url地址

c = file.geturl()print(c)

URL标准中只会允许一部分ASCII字符比如数字、字母、部分符号等
其他字符,如汉字不符合标准,这时需要URL编码来解决
编码解码代码如下

d = urllib.request.quote("http://www.baidu.com")print(d)e = urllib.request.unquote("http://www.haidu.com")print(e)

结果显示为:
http%3A//www.baidu.com
http://www.haidu.com

通过上面学习,我们已经知道如何爬取一个网页的信息并进行简答的处理了
整体代码如下:

# coding=utf-8import urllib.requesturl="http://www.baidu.com" #爬取网页的urlfile = urllib.request.urlopen(url) #爬取网页信息get = file.read() #读取网页所有信息getline = file.readline(); #读取第一行信息#将爬取内容读入本地文件的第一种方法#fhandle=open("D:/python3.5/1.html","wb")#fhandle.write(get)#fhandle.close()#将爬取内容读入本地文件的第二种方法#filename = urllib.request.urlretrieve("http://www.baidu.com",filename="D:/python3.5/2.html")#urllib.request.urlcleanup()#返回与当前环境的有关的信息a = file.info()#获取当前爬取网页的状态码,返回200为正确b = file.getcode()#获取所爬取的网页的额url地址c = file.geturl()#URL标准中只会允许一部分ASCII字符比如数字、字母、部分符号等#其他字符,如汉字不符合标准,这时需要URL编码来解决#编码解码代码如下#http%3A//www.baidu.com#http://www.haidu.comd = urllib.request.quote("http://www.baidu.com")print(d)e = urllib.request.unquote("http://www.haidu.com")print(e)print(a)print(b)print(c)print(get)print(getline)
原创粉丝点击