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

相关推荐
许彰午3 小时前
14_Java泛型完全指南
java·windows·python
广州灵眸科技有限公司4 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) Easy-Eai编译环境准备与更新
服务器·前端·人工智能·python·深度学习
TechWayfarer4 小时前
IP风险等级评估接入实战:金融信贷如何用IP画像辅助风控审核
python·tcp/ip·安全·金融
Esaka_Forever4 小时前
uv init 完整用法(Python 最快包管理器)
服务器·python·uv
大鸡腿同学5 小时前
AI 知识库搜索不准?问题出在分块
后端
夕颜1115 小时前
Multica 使用心得介绍
后端
星轨zb6 小时前
LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
java·spring boot·后端·langchain4j
混凝土拌意大利面6 小时前
TG-BOOT springboot 功能集散开发框架(AI 协作友好)
人工智能·spring boot·后端
神仙别闹7 小时前
基于Python + SQL server 实现(GUI)原神圣遗物管理与角色数值模拟系统
java·数据库·python
是有头发的程序猿7 小时前
电商自动化实战:淘宝/天猫item_get商品详情API全量采集教程(Python源码)
java·python·自动化