【python】爬虫爬取美丽小姐姐图片美女壁纸
爬虫爬取蜂鸟里的高清壁纸
想要自动下载某个网站的高清壁纸,不能一个个点击下载,所以用爬虫实现自动下载。改代码只针对特定网站,不同网站需要特别分析。
一、分析网站
随便点击一张,发现可以上一页,下一页的翻页,所以可以获取改图之后,获得下一张图片地址,无线循环,下载壁纸。本次为了多功能实现,用到了beautifulsoup和re正则表达式两种搜索方式。
上图中需要的信息,从上到下:改图下载地址,图片名字,下一张图片地址。
二、获取网页
1
2
3
4
5
6
7
8
|
def getHtmlurl(url): # 获取网址
try :
r = 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):
r = 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 :
r = 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):
r = 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 i in range ( 1 , 100 ):
url = main()
|
下一篇应该是,爬某网站的小视频。
有问题,联系微信:GD5626633