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

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网络爬虫