1. 前期准备

1.1 开发工具

Python 3.6
Pycharm Pro 2017.3.2
Text文本

1.2 Python库

requests
re
urllib

如果没有这些Python库,使用以下方法

pip install 需要安装的包名(Ps: pip install requests)

2. 配置系统主题文件

个人经过和系统主题对比写了一个主题文件代码,大家可以拷贝到text文本中另存为*.theme文件,我这里命名为lamborghini.theme

; Copyright ?Microsoft Corp.

[Theme]
; Windows 7 - IDS_THEME_DISPLAYNAME_AERO
DisplayName=兰博基尼 # 个性化主题名称
SetLogonBackground=0 ; Computer - SHIDI_SERVER
[CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-109 ; UsersFiles - SHIDI_USERFILES
[CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-123 ; Network - SHIDI_MYNETWORK
[CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\DefaultIcon]
DefaultValue=%SystemRoot%\System32\imageres.dll,-25 ; Recycle Bin - SHIDI_RECYCLERFULL SHIDI_RECYCLER
[CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon]
Full=%SystemRoot%\System32\imageres.dll,-54
Empty=%SystemRoot%\System32\imageres.dll,-55 [Control Panel\Cursors]
AppStarting=%SystemRoot%\cursors\aero_working.ani
Arrow=%SystemRoot%\cursors\aero_arrow.cur
Crosshair=
Hand=%SystemRoot%\cursors\aero_link.cur
Help=%SystemRoot%\cursors\aero_helpsel.cur
IBeam=
No=%SystemRoot%\cursors\aero_unavail.cur
NWPen=%SystemRoot%\cursors\aero_pen.cur
SizeAll=%SystemRoot%\cursors\aero_move.cur
SizeNESW=%SystemRoot%\cursors\aero_nesw.cur
SizeNS=%SystemRoot%\cursors\aero_ns.cur
SizeNWSE=%SystemRoot%\cursors\aero_nwse.cur
SizeWE=%SystemRoot%\cursors\aero_ew.cur
UpArrow=%SystemRoot%\cursors\aero_up.cur
Wait=%SystemRoot%\cursors\aero_busy.ani
DefaultValue=Windows Aero
DefaultValue.MUI=@main.cpl,-1020 [Control Panel\Desktop]
Wallpaper=D:\Wallpaper\lamborghini\139_151202104128_86504.jpg # 初始化图片
TileWallpaper=0
WallpaperStyle=10
Pattern= [VisualStyles]
Path=%ResourceDir%\Themes\Aero\Aero.msstyles
ColorStyle=NormalColor
Size=NormalSize
ColorizationColor=0XA84F1B1B
Transparency=1 [boot]
SCRNSAVE.EXE= [MasterThemeSelector]
MTSM=DABJDKT [Sounds]
; IDS_SCHEME_DEFAULT
SchemeName=@%SystemRoot%\System32\mmres.dll,-800 [Slideshow]
Interval=60000 # 动画时间
Shuffle=0
ImagesRootPath=D:\Wallpaper\ #图片路径
----- 以下不要拷贝,用Python批量添加 -----
Item0Path=D:\Wallpaper\lamborghini\aventador_s-007.jpg
Item1Path=D:\Wallpaper\lamborghini\aventador_s-006.jpg
Item2Path=D:\Wallpaper\lamborghini\aventador_s-005.jpg
Item3Path=D:\Wallpaper\lamborghini\aventador_s-004.jpg
Item4Path=D:\Wallpaper\lamborghini\aventador_s-003.jpg
Item5Path=D:\Wallpaper\lamborghini\aventador_s-002.jpg
Item6Path=D:\Wallpaper\lamborghini\aventador_s-001.jpg

个性化主题配置文件

3.获取页面地址

3.1 获取需要爬取的网页地址

url:http://www.ivsky.com/search.php?q=%E5%85%B0%E5%8D%9A%E5%9F%BA%E5%B0%BC&PageNo=2
q 查询的数据
PageNo 页码

3.2 获取爬取页面分页图片地址

img_url:http://img.ivsky.com/img/bizhi/pic/201804/17/aventador_s-007.jpg
img_url:http://img.ivsky.com/img/bizhi/pre/201804/17/aventador_s-007.jpg
pic 原图
pre 缩略图

4.编写爬虫

import requests, re, urllib.request
class Ivsky_Spider:
def __init__(self, new_search_name):
"""初始化"""
self.url_search = 'http://www.ivsky.com/search.php?q=%s' % urllib.request.quote(new_search_name) # 网站搜索
self.url = re.findall(r'(http://.*?)/', self.url_search)[0] # 网站地址
self.headers = {
'User-Agent': 'Mozilla/5.0', # 伪装成浏览器访问
'Referer': self.url # 是否合法
} def Spider(self):
"""主程序"""
i = 1
while True:
try:
print('='*30 + '第%d页' % i + '='*30)
respone = self.Get_Html_Respone(self.url_search + '&PageNo=' + str(i)).text
page_temp = re.findall(r'<div class="pagelist">.*?</div>', respone, re.S)[0]
if str(i) in page_temp:
self.Get_Img_Download(i, respone)
else:
print('=' * 30 + '程序爬取完成' + '=' * 30)
return
i += 1
except Exception as e:
print('报错信息:%s\n程序退出' % e)
return def Get_Html_Respone(self, new_url):
"""网站Get请求"""
respone = requests.get(url=new_url, headers=self.headers) # Get请求
respone.encoding = 'utf-8' # 网页编码转为utf-8
return respone def Get_Img_Download(self, page, new_respone):
"""图片下载"""
print('-' * 20 + '正在获取第%d页图片内容' % page + '-' * 20)
img_url_temp = re.findall(r'<div class="left">.*?<ul class="pli">.*?</ul>', new_respone, re.S)[0]
img_url_list = re.findall(r'<li>.*?<div.*?><a href="(.*?)".*?>', img_url_temp, re.S)
for i in range(len(img_url_list)):
print('-' * 20 + '正在下载第%d页第%d张图片' % (page, i+1) + '-' * 20)
img_url = self.url + img_url_list[i]
img_respone = self.Get_Html_Respone(img_url).text
img_respone_url = re.findall(r"</script><img.*?src='(.*?)'", img_respone)[0].replace('pre', 'pic')
img_f_name = img_respone_url[img_respone_url.rfind('/') + 1:]
with open('D:\Wallpaper\lamborghini\%s' % img_f_name, 'wb') as f:
img_result = self.Get_Html_Respone(img_respone_url).content
f.write(img_result)
with open('C:\\Users\Administrator\AppData\Local\Microsoft\Windows\Themes\lamborghini.theme', 'a') as f:
f.write('\n')
f.write('Item%dPath=D:\Wallpaper\lamborghini\%s' % (i, img_f_name)) if __name__ == '__main__':
search_name = u'兰博基尼'
a = Ivsky_Spider(search_name)
a.Spider()

Spider-Python实战之通过Python爬虫爬取图片制作Win7跑车主题的更多相关文章

  1. 孤荷凌寒自学python第八十一天学习爬取图片1

    孤荷凌寒自学python第八十一天学习爬取图片1 (完整学习过程屏幕记录视频地址在文末) 通过前面十天的学习,我已经基本了解了通过requests模块来与网站服务器进行交互的方法,也知道了Beauti ...

  2. [python爬虫] 爬取图片无法打开或已损坏的简单探讨

    本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...

  3. 利用python爬虫爬取图片并且制作马赛克拼图

    想在妹子生日送妹子一张用零食(或者食物类好看的图片)拼成的马赛克拼图,因此探索了一番= =. 首先需要一个软件来制作马赛克拼图,这里使用Foto-Mosaik-Edda(网上也有在线制作的网站,但是我 ...

  4. python +requests 爬虫-爬取图片并进行下载到本地

    因为写12306抢票脚本需要用到爬虫技术下载验证码并进行定位点击所以这章主要讲解,爬虫,从网页上爬取图片并进行下载到本地   爬虫实现方式: 1.首先选取你需要的抓取的URL:2.将这些URL放入待抓 ...

  5. Python 爬虫 爬取图片入门

    爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 用户看到的网页实质是由 HTML 代码构成的,爬 ...

  6. 【Python实战】使用Python连接Teradata数据库???未完成

    1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...

  7. python网络爬虫&&爬取图片

    爬取学院官网数据from urllib.request import * #导入所有request urllib文件夹,request只是里面的一个模块from lxml import etree # ...

  8. python实战===一句python代码搭建FTP服务

    环境搭建: python windows/linux pip install pyftpdlib  (安装失败请到这里下载:https://pypi.python.org/pypi/pyftpdlib ...

  9. python3--网络爬虫--爬取图片

    网上大多爬虫仍旧是python2的urllib2写的,不过,坚持用python3(3.5以上版本可以使用异步I/O) 相信有不少人爬虫第一次爬的是Mm图,网上很多爬虫的视频教程也是爬mm图,看了某人的 ...

随机推荐

  1. P3469 [POI2008]BLO-Blockade tarjan

    好久没发博客了啊!自我反省1s...今天再捡起来. 这个题是一道有一点特殊的tarjan,用tarjan维护子树大小,然后判断是否有边多次连接,(就是非树边),然后就进行乘法计算就行了. 具体在代码里 ...

  2. B1299 [LLH邀请赛]巧克力棒 博弈论

    这个题一看就是nim游戏的变形.每次先手取出巧克力就是新建一个nim,但假如先手取一个为0的而且无论后手怎么取剩下的都无法为零就行了.然后用dfs跑. 题干: Description TBL和X用巧克 ...

  3. Gift

    [问题描述] 人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心 意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想 知道当他花一定钱数后剩余钱数无法再购买任何 ...

  4. RDA 升级

    烧录BOOT升级方式: 1.连接 2.烧录BOOT 1)升级“bootrom_raw.bin” 99K,这种升级方式需要Tera Term 工具,按“F5”  U盘升级. 编译的升级文件“RR8503 ...

  5. yii登陆中添加验证码

    1.在SiteController中添加如下代码: /** * Declares class-based actions. */ public function actions() { return  ...

  6. 微信小程序之上传多张图片

    之前写过一篇小程序商品发布的博客,里面有上传多张图片的功能,这里单独拿出来实现以下,小程序的upLoadFile一次只能上传一张图片,需要循环调这个接口来实现 for (var i = 0; i &l ...

  7. SQLServer局部变量和全局变量介绍05-29学习笔记

    变量 数据在内存中存储可以变化的量叫变量.为了在内存中存储信息,用户必须指定存储信息的单元,并为了该存储单元命名, 以方便获取信息,这就是变量的功能.Transact-SQL可以使用两种变量,一种是局 ...

  8. 【HTML5】基于HTML5的高性能动画与游戏

    其实这篇文章类似版本早在12年就在网上各处出现了,也随着HTML5的兴起,HTML的新特性也是倍受开发者们追捧,自然相关HTML5的高性能动画与游戏的相关文章也是层出不穷的,笔者也是在12年接触的相关 ...

  9. ACM_小凯的排序(字符串)

    小凯的排序 Time Limit: 2000/1000ms (Java/Others) Problem Description: 调皮的小凯喜欢排序,拿到什么东西都要排一下序.现在他觉得单一的递增递减 ...

  10. java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度

    package tek; Java算法——求出两个字符串的最长公共字符串 /** * @Title: 问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串. * @author 匹夫( ...