ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

简单壁纸爬虫

2022-01-07 05:01:59  阅读:205  来源: 互联网

标签:img la url 爬虫 简单 small 壁纸 链接


壁纸网站:FACETS.la

壁纸风格如下图,我挺喜欢的,于是设计一个爬虫,自动保存网站所有壁纸.

ps:

    1.网站一共300多张壁纸,每张大小不到1M,全部壁纸150M大小.

    2.爬虫语言:python,还需要用到而外的requests,bs4库.

网站壁纸风格如下:

说一下简单思路:

1.获取图片链接.

  1.1:先获取网站每一页的链接

    打开网站会发现一个规律,第n页的链接为:"facets.la/offset/(n-1)*63/"

        比如:

      第一页是facets.la/offset/0/,

      第二页是:facets.la/offset/63/.

  1.2:获取每页的链接后,获取每页中壁纸的链接.

          打开浏览器开发者选项,选定一张壁纸查看源码,会发现每张图片下都有两个链接,href和src.链接src指向壁纸的小图.链接href跳转到该壁纸的详情页,在详情页有壁纸大图的下载链接.

    大图链接为:facets.la/wallpaper/W_2013_238.jpg

    小图的链接:facets.la/thumbnail/T_2013_238.jpg

    所以这里获取壁纸大图链接有两种可行思路:

      1.2.1:思路一:依次打开每页壁纸,先获取该页中所有壁纸详情页链接(href);再依次进去壁纸详情页,获取壁纸大图链接.

      1.2.2:思路二:依次打开每页壁纸,先获取该页中所有小图链接,再直接通过规律变换成大图链接

 

  思路一和思路二都很容易实现.差别在于:思路一会访问更多次该网站,思路二壁纸的大图链接不是直接从网站获取的,可能会出现错误.

  做这种壁纸网站也挺不容易的,这里选择思路二,尽量减少网站负担.对于可能出现的错误也可以查验一下然后解决.

  下面是代码:

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import re
 4 import os
 5 
 6 def get_small_url():
 7     for i in range(1,7):
 8         a=(i-1)*63
 9         home_url='http://www.facets.la/offset/'+str(a)+'/'
10         home_html = requests.get(home_url)
11         bs = BeautifulSoup(home_html.text, 'html.parser')
12         small_urls = bs.findAll('img',{'src':re.compile('.*\.jpg')})
13         for small_url in small_urls:
14             small_url=small_url['src']
15             with open('img_url.txt','a') as url_f:
16                 url_f.write(small_url+'\n')
17 
18 def get_bigimg():
19     with open('img_url.txt') as f:
20         img_urls=f.read()
21     for img_url in re.findall(r'\_\d+.{7,20}\.jpg',img_urls):
22         img_url="http://www.facets.la/wallpaper/W"+img_url
23         #获取图片链接的哈希值,用以命名图片
24         a=hash(img_url)
25         print("正在下载:"+img_url)
26         image_name="D:/python/image1/"+str(a)+".jpg"
27         try:
28             image=requests.get(img_url)
29             print("正在下载:"+img_url)
30             if image.status_code == 200:
31                 with open(image_name,"wb") as f:
32                     f.write(requests.get(img_url).content)
33                     break
34         except requests.ConnectionError:
35             print("无效链接>>>>:"+img_url)
36 
37 get_small_url()
38 get_bigimg()

 

标签:img,la,url,爬虫,简单,small,壁纸,链接
来源: https://www.cnblogs.com/shengou/p/15773561.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有