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/版本号,百度会识别出来是程序在访问,会对其进行拦截

相关推荐
梅孔立16 分钟前
推荐一个 Python 开源项目:AI 模板填充 + Markdown 转 Word,面向 Aspose 模板引擎的效率神器
人工智能·python·开源
码农小韩21 分钟前
AIAgent应用开发——大模型理论基础与应用(七)
python·学习·ai·大模型·agent
CodeLinghu22 分钟前
LangSmith Evaluate实战评估Agent
人工智能·python·语言模型·llm
起司喵喵1 小时前
推荐一款基于 Python 和 Rust 开发的跨平台 GUI 自动化库!
python·rust·自动化
过期的秋刀鱼!1 小时前
学习曲线-过拟合和欠拟合要做什么以及原因
人工智能·python·深度学习·算法·机器学习·模型评估
Yolanda_20222 小时前
Python学习-第九部分-错误处理与异常处理
开发语言·python·学习
这个人懒得名字都没写2 小时前
Flask + PyArmor Gunicorn启动报错:RuntimeError: unauthorised use of script
python·flask·gunicorn·pyarmor
C++、Java和Python的菜鸟3 小时前
第10章 后端Web进阶(Maven高级)
开发语言·python
暗黑小白3 小时前
路由策略与引擎可替换性
后端·python·ai agent
小罗水3 小时前
第 20 章 高级 RAG 技术与检索优化
人工智能·python·机器学习