01精通Python网络爬虫——快速使用Urllib爬取网页
程序员文章站
2022-05-03 19:57:44
...
运行环境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网络爬虫》,此外也借鉴了@冰彡棒博主的文章点击打开链接
推荐阅读
-
python-快速使用urllib爬取网页(4-GET)
-
python-快速使用urllib爬取网页(8-URLError)
-
python-快速使用urllib爬取网页(7-DebugLog)
-
python-快速使用urllib爬取网页(2-Headers属性)
-
01精通Python网络爬虫——快速使用Urllib爬取网页
-
python-快速使用urllib爬取网页(1)
-
python-快速使用urllib爬取网页(3-超时异常)
-
Python网络爬虫之动态网页爬取及使用selenium模块爬取
-
Python爬虫学习之路(一)—— 使用Urllib爬取网页
-
01Python爬虫---快速使用Urllib爬取网页