信息采集之Python urllib网页爬取_第1页
信息采集之Python urllib网页爬取_第2页
信息采集之Python urllib网页爬取_第3页
信息采集之Python urllib网页爬取_第4页
信息采集之Python urllib网页爬取_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PYTHONCRAWLER信息采集之Pythonurllib网页爬取urllib·请求·解析·合规DATE2026年课程导览01认识urllib爬虫基础认知与工作原理02核心模块解析四大模块职责与用法03实战爬取流程从请求到保存的完整链路04进阶与合规异常处理与反爬应对CHAPTER认识urllib从零认识爬虫利器先理解urllib是什么,再谈怎么用01爬虫与urllib概览urllib标准库四大模块4项request发起请求error承载异常parse处理URLrobotparser解析爬虫协议一份最简爬取代码import即可使用无需额外安装四行代码完成抓取请求→读取→解码→输出fromurllibimportrequestresponse=request.urlopen("")html=response.read().decode("utf-8")print(html)网络爬虫是按一定规则自动抓取网页信息的程序,urllib

是Python实现爬取的基础库之一。urllib的生态定位urllib的价值不在开发效率,而在帮助开发者

吃透爬虫原理。01学习路径为什么从urllib学起环境零门槛:不依赖第三方包,任何Python环境开箱即用抽象层次更低,能看清请求、响应、异常处理的底层机制掌握urllib后再学requests,理解更顺畅,迁移成本极低02生态定位主流爬虫工具对比urllib·标准库:零依赖、层次清晰、适合理解底层requests·第三方库:接口友好、代码简洁、社区活跃Scrapy·框架:工程化能力强、适合大规模采集HTTP请求响应机制理解请求与响应的对应关系,是排查爬虫问题的基础。请求RequestClient→Server核心要素URL、请求方法、请求头常用方法GET

获取资源,POST

提交数据,HEAD

仅取响应头请求头信息User-Agent

标识浏览器,Cookie

维持会话响应ResponseServer→Client三部分组成状态码、响应头、响应体状态码200

成功、301

重定向、403

禁止、404

不存在、500

服务器错误响应体核心数据来源,可能是

HTML

文本、JSON

数据或二进制文件CHAPTER核心模块解析四大模块各司其职request、error、parse、robotparser02request模块核心用法工具导入式,逐一呈现urlopen基础调用、Request对象定制请求头两个层级核心用法urlopen直接调用→Request定制请求头→响应处理基础调用urlopen(url,data,timeout)发起请求并返回响应对象,data非空时自动转为POSTrequest.urlopen("")基础GET请求一行完成定制请求头定制请求头示例构造Request并传入headers,再交给urlopen执行需先

构造Request对象再传入urlopen响应处理通过

resp.status

打印状态码通过

resp.getheaders()

读取响应头error模块异常体系先捕获子类

HTTPError,再捕获父类

URLError捕获顺序异常继承关系URLError父类异常·关键属性

reasonHTTPError子类异常·关键属性

code、headers分层捕获示例409HTTPError状态码关键提示:HTTPError兼具响应对象身份,拥有

code

headers

属性parse模块URL处理parse模块保证URL格式规范、编码正确,是中文字段爬取的前置工序。三大常用函数函数用途示例urlencode将字典转为查询参数,自动编码中文urlencode({"kw":"爬虫"})urljoin将相对链接拼接为完整URLurljoin(base,"page/2")urlparse将URL拆为

scheme、host、path等六部分urlparse(url).hostname中文编码关键点中文参数先

urlencode

再拼入URLquote/unquote

负责字符串与ASCII转换拼接URL时避免手写

&

?,统一交给

urlencode

生成—保证URL格式规范、编码正确,是中文字段爬取的前置工序。robotparser解析协议robots.txt是网站公布的爬虫访问约定,robotparser负责解析并判断权限。判断示例robots.txt

是网站公布的爬虫访问约定robotparser

负责解析并判断权限的模块can_fetch(useragent,url)

返回布尔值,判断指定爬虫是否可抓取指定路径构造

RobotFileParser,set_url

设置robots.txt地址并

read,再调用can_fetch判断指定路径是否允许抓取程序化尊重网站约定是合规爬取的第一步can_fetch返回布尔值判断抓取权限robots.txt网站公布的爬虫访问约定robotparser负责解析并判断权限的模块CHAPTER实战爬取流程一条链路走通爬取从发起请求到数据落盘03发起请求获取响应确定目标页URL优先选择内容静态渲染的页面,降低解析难度构造Request同时设置

User-Agent

timeout,模拟真实访问校验响应检查

resp.status==200

后再进入解析环节实战第一步代码稳健爬取构造Request并传入headers,调用urlopen并设置timeout,断言状态码为200后读取内容请求头与超时是稳健爬取的双保险解析响应数据先编码后解析,选对工具事半功倍编码处理3项响应体是

bytes先按响应头或页面meta标签确定编码常见编码

utf-8、gbk错误编码会直接导致乱码统一写法html=raw.decode("utf-8",errors="ignore")信息提取3项正则表达式用

re

模块匹配标题titles=re.findall(r'<h2class="title">(.*?)</h2>',html)提取目标结构化标题数据保存数据到本地两种保存方式文本数据·open的

w

模式HTML、JSON、CSV文件二进制数据·open的

wb

模式图片、PDF、压缩包代码示例withopen("page.html","w",encoding="utf-8")asf:f.write(html)CHAPTER进阶与合规爬得稳更要爬得对异常可控,边界清晰04异常处理策略合理的重试和功能降级让爬虫从“会跑”走向“跑得稳”重重试机制抖动网络抖动、临时超时是常态,重试能显著提升成功率固定间隔失败后休眠固定秒数再发起请求退避间隔随时间递增,避免对服务器造成压力代码time.sleep(2*(attempt+1))降功能降级超时响应超时降级:缩短请求或返回默认数据解析解析异常降级:跳过异常节点继续解析后续内容不可用服务不可用降级:切换备用接口或等待窗口期常见反爬与应对网站反爬手段urllib应对策略校验User-Agent构造Request时设置完整浏览器标识识别访问频率每次请求间

time.sleep()

控制节奏限制来源Referer在请求头中补齐Referer字段校验Cookie从浏览器复制Cookie加入请求头封锁单一IP通过ProxyHandler配置代理地址代理配置补充说明proxy_handler=request.ProxyHandler({"http":":8080"})opener=request.build_opener(proxy_handler)resp=opener.open(url,timeout=10)合规爬取边界遵守robots协议禁止路径坚决不碰

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论