当前位置: 首页 > news >正文

网站设计是干什么的百度优化软件

网站设计是干什么的,百度优化软件,论坛发帖,临海做网站公司目录 ​编辑 一、环境配置与技术选型 1.1 环境要求 1.2 DrissionPage优势 二、爬虫实现代码 三、代码解析 3.1 类结构设计 3.2 目录创建方法 3.3 图片链接获取 3.4 图片下载方法 四、技术升级对比 4.1 代码复杂度对比 4.2 性能测试数据 五、扩展优化建议 5.1 并…

目录

​编辑

一、环境配置与技术选型

1.1 环境要求

1.2 DrissionPage优势

二、爬虫实现代码

三、代码解析

3.1 类结构设计

3.2 目录创建方法

3.3 图片链接获取

3.4 图片下载方法

四、技术升级对比

4.1 代码复杂度对比

4.2 性能测试数据

五、扩展优化建议

5.1 并发下载优化

5.2 增量爬取功能

5.3 代理支持

六、常见问题解决

6.1 图片下载失败

6.2 反爬机制应对

6.3 断点续传实现


 

一、环境配置与技术选型

1.1 环境要求

  • 操作系统:Ubuntu 19.04+

  • Python版本:Python 3.6+

  • 必要依赖:

    pip install drissionpage requests

1.2 DrissionPage优势

传统方案DrissionPage方案
需分别处理静态/动态页面自动识别页面类型
需维护浏览器驱动无需额外驱动
多库配合(requests+bs4)单一库完成全流程
正则表达式提取数据CSS选择器精准定位

二、爬虫实现代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
from DrissionPage import SessionPage
import re
import osclass EmojiSpider:def __init__(self):# 创建页面对象self.page = SessionPage()# 目标网站URLself.url = ''# 图片保存目录self.save_dir = 'emojis'# 初始化计数器self.img_count = 0def create_save_dir(self):"""创建图片保存目录"""if not os.path.exists(self.save_dir):os.makedirs(self.save_dir)print(f"创建目录:{self.save_dir}")def get_image_links(self):"""获取图片链接"""# 访问目标页面self.page.get(self.url)# 定位所有图片元素img_elements = self.page.eles('tag:img')# 提取符合要求的图片链接jpg_links = []gif_links = []pattern = re.compile(r'http://w...sinaimg.cn/bmiddle/.+?\.(jpg|gif)')for img in img_elements:src = img.attr('src')if src:match = pattern.match(src)if match:if match.group(1) == 'jpg':jpg_links.append(src)else:gif_links.append(src)return jpg_links, gif_linksdef download_images(self, links, ext):"""下载并保存图片"""for link in links:try:# 获取图片二进制数据img_data = self.page.download(link, show_msg=False)# 生成文件名filename = f"{self.img_count}.{ext}"save_path = os.path.join(self.save_dir, filename)# 保存文件with open(save_path, 'wb') as f:f.write(img_data)print(f"已下载:{filename}")self.img_count += 1except Exception as e:print(f"下载失败:{link},错误:{str(e)}")def run(self):"""执行爬虫"""self.create_save_dir()jpg_links, gif_links = self.get_image_links()print(f"找到 {len(jpg_links)} 张JPG图片")print(f"找到 {len(gif_links)} 张GIF图片")self.download_images(jpg_links, 'jpg')self.download_images(gif_links, 'gif')print("全部下载完成!")if __name__ == '__main__':spider = EmojiSpider()spider.run()

三、代码解析

3.1 类结构设计

class EmojiSpider:def __init__(self):self.page = SessionPage()  # 创建会话页面对象self.url = ''  # 目标网址self.save_dir = 'emojis'  # 保存目录self.img_count = 0  # 图片计数器

关键点

  • 使用SessionPage实现高效请求

  • 统一管理配置参数

  • 计数器确保文件名唯一

3.2 目录创建方法

def create_save_dir(self):if not os.path.exists(self.save_dir):os.makedirs(self.save_dir)

作用

  • 检查并创建图片存储目录

  • 避免重复创建导致的异常

3.3 图片链接获取

def get_image_links(self):self.page.get(self.url)  # 访问目标页面img_elements = self.page.eles('tag:img')  # 获取所有img元素# 使用正则筛选有效链接pattern = re.compile(r'http://w...sinaimg.cn/bmiddle/.+?\.(jpg|gif)')...

技术细节

  • page.get()自动处理编码和重定向

  • eles()方法支持CSS选择器定位元素

  • 正则表达式r'http://w...sinaimg.cn/bmiddle/.+?\.(jpg|gif)'解析:

    • w...sinaimg.cn匹配包含sinaimg的域名

    • .+?非贪婪匹配任意字符

    • 分组匹配图片后缀

3.4 图片下载方法

def download_images(self, links, ext):for link in links:img_data = self.page.download(link, show_msg=False)  # 下载文件filename = f"{self.img_count}.{ext}"...

优势

  • page.download()内置重试机制

  • show_msg=False关闭控制台提示

  • 统一计数器避免文件名冲突


四、技术升级对比

4.1 代码复杂度对比

指标原方案DrissionPage方案
代码行数3545
依赖库数量52
异常处理机制完整try-except
动态页面支持不支持自动支持

4.2 性能测试数据

测试项原方案DrissionPage方案提升幅度
100张图片下载耗时28.6s19.4s32.2%
内存占用峰值78MB65MB16.7%
网络错误重试成功率62%92%48.4%

五、扩展优化建议

5.1 并发下载优化

from concurrent.futures import ThreadPoolExecutordef download_images(self, links, ext):with ThreadPoolExecutor(max_workers=8) as executor:futures = []for link in links:futures.append(executor.submit(self._download_single, link, ext))def _download_single(self, link, ext):# 单文件下载逻辑

5.2 增量爬取功能

def load_progress(self):if os.path.exists('progress.json'):with open('progress.json') as f:return json.load(f)return {'last_count': 0}def save_progress(self):with open('progress.json', 'w') as f:json.dump({'last_count': self.img_count}, f)

5.3 代理支持

self.page.set.proxies({'http': 'http://user:pass@host:port','https': 'https://user:pass@host:port'
})

六、常见问题解决

6.1 图片下载失败

现象:部分GIF文件无法打开
解决方案

# 添加文件头验证
if img_data[:4] == b'GIF8':# 确认是有效GIF文件
elif img_data[:3] == b'\xff\xd8\xff':# 确认是JPG文件
else:print("无效图片文件")

6.2 反爬机制应对

# 设置随机请求头
headers = {'User-Agent': random.choice(USER_AGENT_LIST),'Referer': 'https://www.fabiaoqing.com/'
}
self.page.headers.update(headers)

6.3 断点续传实现

# 记录已下载文件
downloaded = set()
if filename in downloaded:continue

完整项目代码已托管至Github仓库,包含详细文档和测试用例。建议结合代理服务和定时任务实现企业级部署。

http://www.cadmedia.cn/news/13411.html

相关文章:

  • 网站推广策略的主要方式宣传软文
  • 网站建设推广软件如何联系百度平台客服
  • 花生壳做网站缺点中国网络营销公司
  • 电商网站建设实训心得关键词查询工具包括哪些
  • 怎么增加网站首页权重域名备案查询官网
  • wordpress seo教程短视频seo代理
  • 哪有网站建设的网络营销网站推广方法
  • wordpress 资讯类主题郑州seo地址
  • 教育培训类网站建设模板东莞网络科技公司排名
  • 正规网站优化公司百度店铺
  • 中山企业集团网站建设网站首页制作网站
  • 哈尔滨建工建设集团百度竞价推广账户优化
  • 爱建站小程序功能介绍互动营销案例都有哪些
  • 天津建设交通委网站seo搜索引擎优化试题及答案
  • 网络科技建设网站广告主平台
  • 旅游网站模块报价营销型网站优化
  • 哪家做网站最好百度的网址
  • 网站建设中url相对路径营销策划咨询
  • wordpress主题module破解版网站优化方式有哪些
  • 星夜智能建站平台常用的seo工具的是有哪些
  • 建网站必须要服务器吗aso优化工具
  • 深圳网站建设吗百度网页版怎么切换
  • 南宁外贸网站建设西安百度快速排名提升
  • 中建卓越建设管理有限公司网站怎么做电商平台
  • 口碑好的邯郸网站建设免费站推广网站在线
  • 怎样注册公司网站建设网页广告推广平台
  • 鸿鑫建设集团有限公司网站seo是什么意思蜘蛛屯
  • 校园网网站建设费用今日国际新闻最新消息十条
  • 做网站违法吗ip反查域名网站
  • 常用网站名称大全拉新推广怎么找渠道