01精通Python网络爬虫——快速使用Urllib爬取网页

运行环境Python3.6.4

一、爬取网页

import urllib.request #导入模块
file = urllib.request.urlopen("http://www.baidu.com")#爬取百度首页,并赋值给变量file
data = file.read()#读取爬取到的网页的全部内容并赋值给data变量
dataline = file.readline()#读取爬取到的网页的一行内容并赋值给变量dataline
#print(data)#打印data,电脑容易卡死,故做注释处理
print(dataline)#打印dataline
'''注意:
1.file.read()读取文件的全部内容,read()会把读取到的内容赋给一个“字符串变量”
2.file.readlines()读取文件的全部内容,readlines()会把读取到的内容赋值给一个“列表变量”推荐使用这种方式。(注:本人尝试失败,需要继续探讨)
'''

二、将爬取的网页以网页的形式保存到本地

思路如下:

1. 爬取网页并将网页的内容赋值给一个变量

2. 以写入的方式打开一个本地文件,并命名为*.html等网页格式

3. 讲1.中变量的值写入该文件中

4. 关闭文件

#方法一:使用urllib.request.urlopen()打开并保存网页
import urllib.request #导入模块
file = urllib.request.urlopen("http://www.baidu.com")#爬取百度首页,并赋值给变量file
data = file.read()#读取爬取到的网页的全部内容并赋值给data变量
fhandle = open("D:/Python35/myweb/part4/1.html","wb")#提前建立这个路径文件夹,以“wb"二进制的方式用open()函数打开该文件,最后赋值给fhandle变量
fhandle.write(data)# 讲data的数据以二进制的方式写入fhandle
fhandle.close() #关闭文件

#方法二:使用urllib.request.urlretrieve()直接将对应信息写入本地文件,格式:“urllib.request.urlretrieve(url,filename = 本地文件地址)"
import urllib.request #导入模块
filename= urllib.request.urlretrieve("http://www.baidu.com",filename = "D:/Python35/myweb/part4/2.html")#该方法较为简洁
urllib.request.urlcleanup()#清除Urlretrieve执行造成的缓存

三、urllib的一些常见用法

1. 爬取网页.info()

返回当前环境相关的信息

file.fifo()#因为第一种方法是,网页内容赋值给了变量file
'''
Date: Mon, 05 Mar 2018 16:11:41 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: Close
Vary: Accept-Encoding
Set-Cookie: BAIDUID=1A5F674159247A71CF2EBD9C7357426D:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=1A5F674159247A71CF2EBD9C7357426D; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1520266301; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1451_21078_18559_17001; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control: private
Cxy_all: baidu+dd0452a7e7e9772ca10cf68f2ed78d53
Expires: Mon, 05 Mar 2018 16:10:55 GMT
X-Powered-By: HPHP
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 1
BDQID: 0xf51d737000020352
BDUSERID: 0
'''

2. 爬取网页.getcode()

获取当前爬取网页的状态码

file.getcode()#理由同上
'''200'''
#状态码200,代表响应正确

3. 爬取网页.geturl()

获取当前爬取的URL地址

file.geturl()
'''http://www.baidu.com'''
#输出了源网址

4. urllib.request.quote()

解决URL中输入中文或者”:”或者”&”等不符合标准的字符时,需要编码

print(urllib.request.quote("http://www.baidu.com"))#编码并打印出来
'''http%3A//www.baidu.com'''

5.urllib.request.unquote()

对编码的网址进行解码

print(urllib.request.unquote("http%3A//www.baidu.com"))#解码并打印出来
'''http://www.baidu.com'''

声明:本文是学习笔记,参考书籍为《精通Python网络爬虫》,此外也借鉴了@冰彡棒博主的文章点击打开链接

你可能感兴趣的:(01精通Python网络爬虫——快速使用Urllib爬取网页)