欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-03 19:57:32
...

要使用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-8
import urllib.request

url="http://www.baidu.com" #爬取网页的url
file = 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.com
d = 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)
相关标签: python 爬虫