本人这次用的lxml解析,BeautifulSoup,requsts。
具体思路如下:
1)写一个获得源码的函数
2)写一个下载图片的函数
3)写一个获得首页上所有套图链接和名称的函数
4)写一个打开套图链接,并保存图片的函数
代码如下:
import requests,lxml,time
from bs4 import BeautifulSoup
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
#得到源码
def get_html(url):
response=requests.get(url,headers)
response.encoding='gb2312'
html=response.text
return html
#下载图片
def down_pic(url):
response=requests.get(url,headers)
return response.content
#找到所有套图的链接及名字
# url_list=[]
# text_list=[]
def get_pic_list(html):
soup=BeautifulSoup(html,'lxml')
try:
pic_list=soup.find_all('li',class_='wp-item')
for i in pic_list:
a_tag=i.find('h3',class_='tit').find('a')
url=a_tag.get('href')
text=a_tag.get_text()
# print(url,text)
# url_list.append(url)
# text_list.append(text)
print('{:<50}'.format('正在下载套图:\t'+text))
get_pic(url,text)
print('休息5秒')
time.sleep(5)
except Exception as e:
print(e)
#保存图片
def get_pic(url,text):
html=get_html(url)
soup=BeautifulSoup(html,'lxml')
try:
pic_list=soup.find('div',id='picture').find_all('img')
# print(pic_list)
for i in pic_list:
# print(i)
name=i.get('alt')
url_=i.get('src')
pic=down_pic(url_)
# print('{:^25}'.format(name))
# print('{:^25}'.format(url))
print('{:^25}'.format('正在下载: '+name))
with open('D:\python_script\pic\{}'.format(text+url_.split('/')[-1]),'wb') as fh:
fh.write(pic)
except Exception as e:
print(e)
def main():
url = 'http://meizitu.com/a/more_1.html'
# print(get_html(url))
html_ = get_html(url)
get_pic_list(html_)
main()
运行结果如下:
正在下载套图:
下载。。。1
下载。。。2
.。。。
休息5秒