写个python,爬行【游明星空】的壁纸(5)

news/2024/11/16 5:26:55/

前文摘要/本文内容:

好的,我们已经把爬虫的脚本写出来了,写完之后,我们去执行,发现,实际上,在很多细节上,它并不是很好,正所谓,先实现产品功能,再做产品优化嘛,所以这一节,我们就分析一下,脚本都有哪些的不好,需要改善什么内容


线程单一:

整体的过程是这样的,获取一期的url,请求这个url,获取html代码,抓取壁纸图片url,然后再遍历下一页,如果遍历成功,继续下载壁纸图片。完成了一期的下载后,再进行下一期的下载。

单一的线程工作,好处就是,不会给机器资源带来巨大的压力,但很显然,它连机器1%的性能都没用上,剩下的资源造成了极大的浪费。

所以说,浪费可耻!因此,这个问题一定要解决!

想办法引入多线程技术,十几二十期url,一起下载,这样程序的效率才高!


情况单一:

我们的爬取,都是基于一个页面的规律来写的规则,其实,这个就是最大的问题,游民星空已经发展了15年了,页面版图可能觉得都差不多,但是,html代码不一定是一样的,脚本会精准的识别代码,就算版图的外观长的一样,只要是html代码改了一个字母,就会出现报错,导致脚本执行达不到预期的效果。

因此,需要引入异常判断的语句进去。


太多的网络I/O请求:

列表页有24页,每页有14期,每期大约有8页,也就是说,至少都需要2688次网络请求,实际上还会更多。要知道,网络这东西啊,你觉得它很稳定,实际上,它是断断续续的,基于TCP的传输是可靠,但是它的可靠是基于校验的,在实际上的底层物理层传输的时候,空气湿度稍微高一点,光纤的传输效率都会下降,长距离的传输,避免不了丢包的情况,哪怕是丢那么一帧,都有可能拉闸整个文件。

因此,尽可能的减少重复或者不必要的请求数量。


失败了就言放弃的下载:

想想看,如果我们在下载壁纸图片的时候,第一次由于网络原因,连接失败了,那么,程序就报错,结束了这次的壁纸下载,对吧,既然是网络原因,失败了,为什么我们不多尝试几次下载呢?

因此,需要引入一个尝试重新下载的机制。


不够专一的程序设计:

其实,程序设计和公司架构的发展很类似,一开始,规模小,公司的老板,既是将军,又是马仔。当规模大起来之后,就出现了专项职能部门,比如人力资源部啊,财务部啊等等。

因此,这个爬虫可以分成这两个专属职能

1、爬行获取url

2、根据url,下载图片


结尾:

所以说,分析完这些问题之后,下一步,我们就要着手去优化这些东西,以便达到更高的程序执行效率。


http://www.ppmy.cn/news/796662.html

相关文章

下载游民的壁纸

# -*- coding: utf-8 -*-""" http://www.gamersky.com/news/201309/297991.shtml """import urllib2 import urllib import re import string""" param url:壁纸首页 param begin:壁纸起始页 param end:壁纸终止页 ""&…

我调用第三方接口遇到的13大坑

前言 在实际工作中,我们经常需要在项目中调用第三方API接口,获取数据,或者上报数据,进行数据交换和通信。 那么,调用第三方API接口会遇到哪些问题?如何解决这些问题呢? 这篇文章就跟大家一起…

培训报名小程序报名列表页开发

目录 1 创建页面2 组件搭建3 设置URL参数4 设置筛选条件5 首页跳转6 最终的效果总结 这节我们来开发报名列表功能,先看原型 1 创建页面 功能要在页面上呈现,需要先创建页面。打开我们的培训报名小程序,在页面区,点击创建页面的…

以太网未识别的网络win10_Win10以太网未识别的网络怎么办

以络”解决方法Windows”按钮,从其运行”项以打开“运行”窗口(直接按WindowsR快捷打开)。从打开的“运行”窗口中,输入“cmd”并按回车即可进入MSDOS界面,如图所示:待打开“命令提示符”窗口后,输入命令“ping路由器内…

电脑突然无法识别无线网络

本篇文章记录电脑无法识别无线网络的解决办法。 一.原因-无线网卡被禁用-启动即可 1.点击“开始”中设置,选择“网络和Internet” 2.选择“更改适配器选项” 3.检查wlan是否禁用,如禁用右击“启用” 启用后,图片如下: 4.此时…

win10以太网未识别的网络解决方法

windows10以太网有时会莫名其妙出现无法上网,图标上显示感叹号,提示“未识别的网络”。 当然,本文讨论的是非人为因素导致未识别的网络解决方法,win8及以上系统的有线网络确实会有突然短路的情况, 在尝试本方法前建议…

未识别的网络无法连接Internet解决方法

这一篇和我前面的一篇是两种解决类似问题的方法,两台电脑我都用了两种方法尝试,最后是哪一种方法成功还是都可以还未知,都记录一下解决方法吧 快捷键WinX,再点击打开设备管理器: 找到网络适配器 找到当前使用或者说我…

Win11未识别的网络无internet怎么办?

在新的系统使用中有出现很多问题很多用户不懂得如何去解决?随机抽取了一个问题给大家演示一下,例如使用win11过程中遇到“未识别的网络无internet访问”显示应该怎么办,如何去解决问题,下面小编给你讲解一下。 解决方法 方法一 1、…