如果你还在苦恼没有好看的壁纸,或者是想要更多的壁纸以满足你随时更换或者是以幻灯片的形式自动切换,那么我认为这个免费网站美女图片大全,性感美女图片 高清好看美女图片,写真,大图图库_3g美女图片对你来说是一个很棒的选择,或许可以收藏。
但是当你打开网址进去之后,你会发现里面的壁纸太多了,但恰好你又每张都很喜欢,都想下载下来作为壁纸,怎么办?你会选择一张一张的打开去慢慢手动下载吗?
所以Python爬虫是一个好东西,光凭一个简单的程序就能帮你全部下载,收入囊中。
1.大致思路及步骤
1.找个网站(美女图片大全,性感美女图片 高清好看美女图片,写真,大图图库_3g美女图片);
2.找一下页面的URL规律,观察不同页数的页面的URL区别;
3.找到图片链接和图片名 (可在浏览网页时按下键盘F12,然后在页面中用鼠标点击图片即可),考虑用正则表达式提取出图片的链接和图片名称 [ # lazysrc=”(.*?jpg)” ; img alt=”(.*?)” ];
4.想办法下载。
2.程序代码及简略解释
import os
import re
from urllib.request import Request, urlopen, urlretrieve
path = os.getcwd() + os.sep + "bizhi" #
文件下载后保存位置,即当前目录下的“bizhi”文件夹内
def download(n):
if not os.path.isdir(path):
os.makedirs(path)
for i in range(1,n+1):
url=f"https://www.3gbizhi.com/meinv/index_{str(i)}.html" # 通过URL发现i值就能对应页数
print("正在下载第%s页" % i)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.33' # 对应的User-Agent可通过在网页上按F12查找
}
request=Request(url=url,headers=headers)
content=urlopen(request).read().decode("utf-8")
link=re.findall('lazysrc="(.*?jpg)"',content) # 提取图片链接
name=re.findall('img alt="(.*?)"',content) # 提取图片名称
ziplist=list(zip(name,link))
for imgurl in ziplist:
urlretrieve(imgurl[1],f'{path}{os.sep}{imgurl[0]}.jpg')
def main():
n=int(input("请输入要下载的页数(1-32):")) # 提示输入范围为1-32是因为当前网站总共只有32页内容
download(n)
print("下载完成,请查看文件夹")
if __name__ == '__main__':
main()
执行以上程序,可看到运行框提示你输入你想要下载的页面数量,输入完成后就可看见页面正在下载,只需静静等待下载完成即可。
3.程序升级版(详细图组及原图)
但是如过仔细浏览网站并对比当前程序,会发现一个问题,那就是当前程序下载的是网站首页里面的每一个单个图片,即缩略图,如果在网站里点开这些图片,会发现里面是一整组图片并且里面的每一张图片都要比首页缩略图更清晰。因此可以考虑更改升级上面对于图片链接和名称的提取方式。修改部分如下:
link = re.findall('<a href="(.*?)" target="_blank" ', content)
for links in link:
url = links
request = Request(url=url, headers=headers)
content = urlopen(request).read().decode("utf-8")
name = re.findall('<h2>(.*?)</h2>', content)
num = int(name[0].split('/')[1].replace(')', ''))
for m in range(1, num + 1):
time.sleep(1) # 减缓爬取速度,防止被网站封掉
url2 = '_' + str(m) + '.html'
url = re.sub(".html", url2, links)
request = Request(url=url, headers=headers)
content = urlopen(request).read().decode("utf-8")
link1 = re.findall('<a href="(.*?)" target="_blank">查看原图</a>', content)
name1 = re.findall('<h2>(.*?)</h2>', content)
name1[0] = name1[0].split('(')[0] + str(m)
print(name1)
ziplist = list(zip(name1, link1))
for imgurl in ziplist:
urlretrieve(imgurl[1], f'{path}{os.sep}{imgurl[0]}.jpg')
修改完成后爬取程序就比较完善了,但此时下载的数量就更多了,所以如果你选择了很多页面,那你下载的同时就可以选择干别的事了。