python-爬虫-urllib

网络爬虫(Web Crawler),又叫网络蜘蛛、网络机器人,是一种自动化数据采集程序

数据采集 → 数据处理 → 数据存储

常见的工作流程如下:

1.定义采集的目标(网站、APP、公众号、小程序),发送网络请求获取数据

2.当向目标发起请求,遇到对方服务器无响应或提示其他错误时,进行发起指定次数的重新请求

3.对获取到的数据进行重新处理,提取出需要的信息

4.将提取到的数据进行保存,可保存在文件、数据库中

5.继续循环进行下一轮任务的执行,直到所有爬取任务执行完毕

urllib网络请求库

urllib是python内置的一个用于网络请求的库,可以实现模拟浏览器发送HTTP请求并获取请求返回结果

请求一个简单的网页并设置请求超时

urllib.request模块
urlopen()方法可以对网页发起请求并获取返回结果

python 复制代码
import urllib.request

url = 'http://www.baidu.com/'
r = urllib.request.urlopen(url,timeout=3)		# 请求超过3秒未响应内容,舍弃或重新尝试访问
html = r.read()			# read()方法可以拿到真正的网页源代码
html.decode('utf-8')	# 有乱码时,可以通过decode()方法对字符串进行解码

timeout=3:请求超过3秒未响应内容,舍弃或重新尝试访问
read()方法可以拿到真正的网页源代码

有乱码时,可以通过decode()方法对字符串进行解码

使用data参数提交数据

data必须是字节流编码格式的内容,即bytes类型,通过bytes()函数可以进行转换

传递了data参数,请求方式为POST

http://httpbin.org/

urllib.parse.urlencode()将提交的data字典数据转化为str
bytes()转换为字节流·

python 复制代码
import urllib.parse
import urllib.request

data = bytes(urllib.parse.urlencode({'word':'22222'}),encoding='utf8')
response = urllib.request.urlopen('http://httpbin.org/post',data=data)
response.read()

b'{\n "args": {}, \n "data": "", \n "files": {}, \n "form": {\n "word": "22222"\n }, \n "headers": {\n "Accept-Encoding": "identity", \n "Content-Length": "10", \n "Content-Type": "application/x-www-form-urlencoded", \n "Host": "httpbin.org", \n "User-Agent": "Python-urllib/3.7", \n "X-Amzn-Trace-Id": "Root=1-64fff907-00a9118873eff0da107e28f2"\n }, \n "json": null, \n "origin": "117.136.56.234", \n "url": "http://httpbin.org/post"\n}\n'

urllib.request.Request()

python 复制代码
url = 'https://www.baidu.com/'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76'
}
request = urllib.request.Request(url,headers=headers)
response = urllib.request.urlopen(request)
response.read().decode('utf-8')

百度网站对请求的headers信息进行了验证,直接使用Request()请求,默认的User-Agent是Python-urllib/版本号,百度会识别出来是程序在访问,会对其进行拦截

相关推荐
Echo_NGC22371 分钟前
【论文解读】Attention Is All You Need —— AI 时代的“开山之作“,经典中的经典(transformer小白导读)
人工智能·python·深度学习·神经网络·机器学习·conda·transformer
鸟儿不吃草27 分钟前
安卓实现左右布局聊天界面
android·开发语言·python
剑神一笑31 分钟前
从零开始理解 robots.txt:搜索引擎爬虫的“门禁系统“
爬虫·搜索引擎
mr_LuoWei200935 分钟前
类似CASS for autoCAD的平基土石方三维计算工具基本完成
python·三维地形图
alwaysrun1 小时前
Python自动提取邮件订阅链接并解析
python·url·邮件·ai提取
何中应1 小时前
Conda安装&使用
python·conda·python3.11
无敌昊哥战神1 小时前
【LeetCode 37】解数独 (Sudoku Solver) —— 回溯法详解 (Python/C/C++)
c语言·c++·python·算法·leetcode
风流 少年1 小时前
Python Web框架:FastAPI
前端·python·fastapi
Qres8211 小时前
Rabrg/artificial-life test
python·模拟
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月1日
大数据·人工智能·python·信息可视化·自然语言处理