【python】爬虫爬取美丽小姐姐图片美女壁纸

爬虫爬取蜂鸟里的高清壁纸

  想要自动下载某个网站的高清壁纸,不能一个个点击下载,所以用爬虫实现自动下载。改代码只针对特定网站,不同网站需要特别分析。

一、分析网站

  https://photo.fengniao.com/

  随便点击一张,发现可以上一页,下一页的翻页,所以可以获取改图之后,获得下一张图片地址,无线循环,下载壁纸。本次为了多功能实现,用到了beautifulsoup和re正则表达式两种搜索方式。

  上图中需要的信息,从上到下:改图下载地址,图片名字,下一张图片地址。

二、获取网页

1
2
3
4
5
6
7
8
def  getHtmlurl(url):   # 获取网址
     try :
         =  requests.get(url)
         r.raise_for_status()
         r.encoding  =  r.apparent_encoding
         return  r.text
     except :
         return  ""

三、下载图片和获取下一个图片地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def  getpic(html):   # 获取图片地址并下载,再返回下一张图片地址
     soup  =  BeautifulSoup(html,  'html.parser' )
     #all_img = soup.find('div', class_='imgBig').find_all('img')
 
     all_img  =  soup.find( 'a' class_ = 'downPic' )
     img_url  =  all_img[ 'href' ]
 
     reg  =  r '<h3 class="title overOneTxt">(.*?)</h3>' # r'<a\sclass=".*?"\starget=".*?"\shref=".*?">(.*)</a>'  # 正则表达式
     reg_ques  =  re. compile (reg)   # 编译一下正则表达式,运行的更快
     image_name  =  reg_ques.findall(html)   # 匹配正则表达式
 
     urlNextHtml  =  soup.find( 'a' class_ = 'right btn' )
     urlNext  =  urlHead + urlNextHtml[ 'href' ]
 
     print ( '正在下载:'  +  img_url)
     root  =  'D:/pic/'
     path  =  root  +  image_name[ 0 +  '.jpg'
     try :   # 创建或判断路径图片是否存在并下载
             if  not  os.path.exists(root):
                 os.mkdir(root)
             if  not  os.path.exists(path):
                 =  requests.get(img_url)
                 with  open (path,  'wb' ) as f:
                     f.write(r.content)
                     f.close()
                     print ( "图片下载成功" )
             else :
                 print ( "文件已存在" )
     except :
         print ( "爬取失败" )
     return  urlNext

四、结果 

 

  当然,我们也可以下载别的网页上图片,如下图,这就不放大了。  

                                         

 五、源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from  bs4  import  BeautifulSoup
import  requests
import  os
import  re
 
urlHead  =  'https://photo.fengniao.com/'
url  =  'https://photo.fengniao.com/pic_43591143.html'
 
def  getHtmlurl(url):   # 获取网址
     try :
         =  requests.get(url)
         r.raise_for_status()
         r.encoding  =  r.apparent_encoding
         return  r.text
     except :
         return  ""
 
def  getpic(html):   # 获取图片地址并下载,再返回下一张图片地址
     soup  =  BeautifulSoup(html,  'html.parser' )
     #all_img = soup.find('div', class_='imgBig').find_all('img')
 
     all_img  =  soup.find( 'a' class_ = 'downPic' )
     img_url  =  all_img[ 'href' ]
 
     reg  =  r '<h3 class="title overOneTxt">(.*?)</h3>' # r'<a\sclass=".*?"\starget=".*?"\shref=".*?">(.*)</a>'  # 正则表达式
     reg_ques  =  re. compile (reg)   # 编译一下正则表达式,运行的更快
     image_name  =  reg_ques.findall(html)   # 匹配正则表达式
 
     urlNextHtml  =  soup.find( 'a' class_ = 'right btn' )
     urlNext  =  urlHead + urlNextHtml[ 'href' ]
 
     print ( '正在下载:'  +  img_url)
     root  =  'D:/pic/'
     path  =  root  +  image_name[ 0 +  '.jpg'
     try :   # 创建或判断路径图片是否存在并下载
             if  not  os.path.exists(root):
                 os.mkdir(root)
             if  not  os.path.exists(path):
                 =  requests.get(img_url)
                 with  open (path,  'wb' ) as f:
                     f.write(r.content)
                     f.close()
                     print ( "图片下载成功" )
             else :
                 print ( "文件已存在" )
     except :
         print ( "爬取失败" )
     return  urlNext
 
def  main():
     html = (getHtmlurl(url))
     print (html)
     return  getpic(html)
if  __name__  = =  '__main__' :
     for  in  range ( 1 , 100 ):
         url = main()

  下一篇应该是,爬某网站的小视频。

有问题,联系微信:GD5626633

猜你喜欢

转载自www.cnblogs.com/shijieyanyuan/p/py_Pictures.html
今日推荐