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类库函数和属性介绍及一些简单示例。

相关推荐
梦想很大很大1 分钟前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
毅炼9 分钟前
Java 基础常见问题总结(4)
java·后端
张3蜂10 分钟前
深入理解 Python 的 frozenset:为什么要有“不可变集合”?
前端·python·spring
皮卡丘不断更23 分钟前
手搓本地 RAG:我用 Python 和 Spring Boot 给 AI 装上了“实时代码监控”
人工智能·spring boot·python·ai编程
想用offer打牌31 分钟前
MCP (Model Context Protocol) 技术理解 - 第一篇
后端·aigc·mcp
千寻girling35 分钟前
Koa.js 教程 | 一份不可多得的 Node.js 的 Web 框架 Koa.js 教程
前端·后端·面试
爱打代码的小林38 分钟前
基于 MediaPipe 实现实时面部关键点检测
python·opencv·计算机视觉
程序员清风44 分钟前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应1 小时前
请求头设置没有生效
java·后端
NPE~1 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化