Python urllib 爬虫入门(1)

本文主要为Python urllib类库函数和属性介绍及一些简单示例。

目录

urllib爬取网页

简单示例

写入文件

其他读取方法

readline函数

readlines函数

response属性

当前环境信息

返回状态码

返回url地址

对url进行编码与解码

写入文件

总结


urllib爬取网页

通过python的urllib库请求爬取网页的一个简单示例。

简单示例

简单的使用urllib请求一个域名,并解析获取响应内容。

示例如下:

python 复制代码
import urllib.request

# 向指定url发起请求,并返回服务器响应数据(文件对象)
response = urllib.request.urlopen('http://www.baidu.com')
# 不解析的话为文件对象
# print(type(response.read()))
# 读取响应并解析为字符串格式
data = response.read().decode('utf-8')
print(data)

写入文件

将响应的网页内容写入本地文件,在实际应用中主要用于前期分析网页信息。

示例如下:

python 复制代码
import urllib.request

# 向指定url发起请求,并返回服务器响应数据(文件对象)
response = urllib.request.urlopen('http://www.baidu.com')
data = response.read()

import os
def writeLocalFile(content, name):
    with open(os.getcwd() + '/' + name + '.html', 'wb') as f:
        f.write(content)

writeLocalFile(data, 'baidu')

注意:这里不能把内容解析为字符串,否则写入时会报错。

其他读取方法

上文中例子使用是urllib.read()函数除外,还有其他的函数可以使用。

readline函数

读取文件一行,示例如下:

python 复制代码
print(response.readline())

执行结果:

readlines函数

读取文件的全部内容,会把读取到的数据赋值给一个列表变量。

示例如下:

python 复制代码
con = response.readlines()
print(type(con))
print(con)

执行结果:

建议使用readlines方式获取,可以对文件内容进行分行处理:如去除空格。

response属性

当前环境信息

返回当前环境的有关信息

示例如下:

python 复制代码
print(response.info())

执行结果:

返回状态码

可通过返回状态码,来判断请求状态和是否继续执行。

python 复制代码
print(response.getcode())

执行结果:

bash 复制代码
200

返回url地址

返回当前正在爬取的url地址,示例如下:

python 复制代码
print(response.geturl())

对url进行编码与解码

如果我们需要编码的URL中包含了特殊字符,如空格、斜杠、问号等,urllib quote()函数会将其替换为 % 加上换码后的ASCII码值,以此来保证URL的正确性。

示例如下:

python 复制代码
import urllib.request
url = 'http://www.baidu.com'
# 编码
newUlr = urllib.request.quote(url)
print(newUlr) # http%3A//www.baidu.com


# 解码
newUrl2 = urllib.request.unquote(newUlr)
print(newUrl2) # http://www.baidu.com

写入文件

可使用urllib.request.urlretrieve() 函数把爬取到的网页直接写入文件中。

示例如下:

python 复制代码
import urllib.request

url = 'http://www.baidu.com'
fileName = './filename1.html'
info = urllib.request.urlretrieve(url, filename=fileName)
print(info)

执行结果:

bash 复制代码
('./filename1.html', <http.client.HTTPMessage object at 0x000002379A37D5C8>)

总结

本文主要为Python urllib类库函数和属性介绍及一些简单示例。

相关推荐
kishu_iOS&AI1 小时前
深度学习 —— 损失函数
人工智能·pytorch·python·深度学习·线性回归
好运的阿财1 小时前
OpenClaw工具拆解之canvas+message
人工智能·python·ai编程·openclaw·openclaw工具
wengqidaifeng1 小时前
python启航:1.基础语法知识
开发语言·python
观北海1 小时前
Windows 平台 Python 极简 ORB-SLAM3 Demo,从零实现实时视觉定位
开发语言·python·动态规划
FreakStudio2 小时前
做了个Claude Code CLI 电子宠物:程序员的实体监工代码搭子
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
柴米油盐那点事儿2 小时前
python+mysql+bootstrap条件搜索分页
python·mysql·flask·bootstrap
AC赳赳老秦2 小时前
OpenClaw二次开发实战:编写专属办公自动化技能,适配个性化需求
linux·javascript·人工智能·python·django·测试用例·openclaw
GetcharZp3 小时前
比 Zap 还要快?Go 社区高性能日志神器 Zerolog 落地实践指南
后端
Ulyanov3 小时前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
anzhxu3 小时前
Go基础之环境搭建
开发语言·后端·golang