三、爬虫自动化——静态爬虫Static Spider1、静态爬虫1.1 爬虫的整体架构一个完整的爬虫需要完成如下五步发送请求requests..get(url, headers, timeout)获取响应获取页面响应码resp.status_code获取页面文本resp.text解析数据BeautifulSoup(resp.text, lxml)存储数据在CSV里面写入数据csv.writer()打开文件进行写入open(file, w)翻页爬取for e in range(len(f))1.2 静态爬虫示例主要包含三个步骤调制器、解析器、下载器Books to Scrape 图书信息爬虫分类页示例 import csv import random import time import requests from bs4 import BeautifulSoup class BookSpider: 图书爬虫下载 - 解析 - 保存 def __init__(self): # 复用 Session保持连接并统一携带请求头 self.session requests.Session() self.session.headers.update({ User-Agent: (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36) }) def download(self, url): 下载器 time.sleep(random.uniform(0.5, 1.5)) # 请求间隔降低被限流概率 try: resp self.session.get(url, timeout10) resp.raise_for_status() # 非 2xx 直接抛异常 return resp.content # 用 content 而非 text页面常不声明 charset # requests 默认按 ISO-8859-1 解码会导致中文/符号乱码 except requests.RequestException as e: print(f下载失败: {e}) return None def parse(self, html): 解析器 if not html: return [] soup BeautifulSoup(html, lxml) # 传入 bytessoup 自动检测页面编码 items [] for book in soup.select(article.product_pod): title_tag book.select_one(h3 a) price_tag book.select_one(.price_color) if title_tag and price_tag: # 任一字段缺失就跳过 items.append({ title: title_tag.get(title, ), price: price_tag.text.strip(), link: title_tag[href], }) return items def save(self, data, filename): 保存 if not data: return with open(filename, w, newline, encodingutf-8-sig) as f: writer csv.DictWriter(f, fieldnamesdata[0].keys()) writer.writeheader() writer.writerows(data) def crawl(self, base_url, pages, filename): 调制器 all_data [] for page in range(1, pages 1): # books.toscrape 分类页分页规则page-2.html / page-3.html if page 1: url base_url else: url base_url.replace(index.html, fpage-{page}.html) print(f正在爬取第 {page}/{pages} 页: {url}) html self.download(url) items self.parse(html) all_data.extend(items) print(f 获取到 {len(items)} 条数据) self.save(all_data, filename) print(f完成共爬取 {len(all_data)} 条数据) return all_data if __name__ __main__: # 爬虫对象 spider BookSpider() # 创建爬虫 spider.crawl( base_urlhttp://books.toscrape.com/catalogue/category/books_1/index.html, pages3, filenameproducts.csv, )1.3 分页爬取方法常见URL规律型对于URL中有常见的规律可以使用循环进行找到全部的URLbase_url https://example.com/list for page in range(1, 11): url f{base_url}?page{page} # 爬取该页 ...API接口型直接使用接口进行获取URL# POST请求获取JSON数据 api_url https://example.com/api/products for page in range(1, 11): resp requests.post(api_url, json{page: page, size: 20}) data resp.json() # 处理数据 ...1.4 数据存储方式CSV存储适合表格数据import csv data [ {name: 商品A, price: 99}, {name: 商品B, price: 199} ] with open(output.csv, w, newline, encodingutf-8-sig) as f: writer csv.DictWriter(f, fieldnames[name, price]) writer.writeheader() writer.writerows(data)newline参数在Windows下是必须的否则会导致行间距加倍1.5 爬虫必备注意事项1合法合规爬取网站允许的数据 robot.txtimport requests # 查看网站的robots.txt resp requests.get(https://www.zhihu.com/robots.txt) print(resp.text)2爬取的时候控制请求频率import time import random # 每次请求后随机等待0.5-2秒 delay random.uniform(0.5, 2.0) time.sleep(delay)3异常值处理try: resp requests.get(url, timeout5) resp.raise_for_status() # HTTP错误会抛出异常 except requests.Timeout: print(请求超时) except requests.HTTPError as e: print(fHTTP错误: {e}) except requests.RequestException as e: print(f请求失败: {e})4不爬取敏感信息个人隐私、商业机密数据、受版权保护的内容
企业数字化 ERP 产品动态
相关推荐
Python 3.13 安装教程:环境变量配置+自定义路径 Python3.13是一种面向对象、直译式计算机程序设计语言,具有简单、易学、免费开源、可移植性、可扩展性等特点,已经具有十多年的发展历史,成熟且稳定。随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
… · 2026/9/27 5:44:12
SocratiCode影响分析实战:精准计算重构“爆炸半径“,从此改代码不再提心吊胆 SocratiCode影响分析实战:精准计算重构"爆炸半径",从此改代码不再提心吊胆 【免费下载链接】SocratiCode Enterprise-grade (40m LOC) codebase intelligence, zero-setup, local & private Plugin/Skill/Extension or MCP: hybrid semant… · 2026/9/27 5:44:06
3个坑搞懂做宣传类网站需要什么资质防黑挂马 3个坑搞懂做宣传类网站需要什么资质防黑挂马 网站后台突然打不开,或者打开全是乱七八糟的广告代码,后台密码改了也没用,甚至被植入挖矿脚本,CPU占用率飙到100%。遇到这种事,很多项目经理第一反应是找当初建站的人,结果对方要么失联,要么甩锅说… · 2026/9/27 5:44:00
静态排流水设计:超标量处理器中指令调度的硬件与编译器协同 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:22:28
Syncthing深度配置与运维实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:22:22
极化实验全解析:从三电极搭建到塔菲尔外推与数据拟合 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:22:16
IPTV直播源管理系统实战:源管理、m3u导出与自动检测 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:22:09
福田附近做网站公司选对域名服务器避坑最佳实践指南 福田附近做网站公司选对域名服务器避坑最佳实践指南 域名解析超时、服务器IP被封、SSL证书不生效,这三座大山压得多少初创团队喘不过气。在福田这片创业热土,找福田附近做网站公司时,最让人头疼的不是代码怎么写,而是域名服务器搞不懂。很多老板以为… · 2026/9/27 6:22:09
网页为何默认英文?浏览器语言设置与Accept-Language排查全攻略 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:22:03
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01