标题 最新 用Python 批量爬取网上美眉图片
故事是这样的:七月份给室友说,我要开始学习Python了。室友一脸懵,并问我Python是啥?确实对于我这个小城市来说Python之风还没有吹到我们这里来,以至于在我们大学都没有开设这门课!很是尴尬。要不是在网上听说Python很牛我也不会接触到。于是我便给室友说了Python的强大,可是我却遭到了室友的嘲笑。呜呜呜……。“士可杀不可辱。”我立下豪言壮志说:“三个月后我给你做出一个能批量获取网上你最爱图片的程序,给你瞅瞅!”。于是……
当然,关于这方面博客上面有很多例子,但我读了之后发现不是怎么会,不太易懂。在这里我以小白的身份写下了这篇博客,希望可以帮到更多的小白!(毕竟不能丢了咱Python的脸,哈哈哈。)
我目前自学了:Python基础知识,Python爬虫知识(仅限requests库、os库、BeautifulSoup库、re库、正则表达式)
好啦,不废话了,咱们开始!
import requests
from bs4 import BeautifulSoup
import traceback
import re
import os
import time
#我是新手,先定义的主函数,这样我的头脑清晰一些!
def main():
A_url = "http://www.win4000.com/meinvtag2.html"
B_url = ""
lsM = [] #用来储存目录网址链接的呦!
lsZ = [] #用来储存每张图片连接的呦!
getMULIANJIE(lsM,A_url)
for i in lsM:
for k in range(20): #这里我大概看了一下每一个母相册后面的子照片都没有超过20个的,所以用的20!
if k == 0:
B_url = "http://www.win4000.com/mein" + i + ".html"
else:
B_url = "http://www.win4000.com/mein" + i + "_" + str(k) + ".html"
getPHOTO(B_url,lsZ)
for j in lsZ:
for m in j:
downPHOTO(m)
#解析网页
def getHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
#获取网页链接目录
def getMULIANJIE(ls,url):
html = getHTMLText(url)
soup = BeautifulSoup(html,'html.parser')
a = soup.find_all('a')
for i in a:
try:
href = i.attrs['href']
ls.append(re.findall(r"[meinv]\d{6}",href)[0])
except:
continue
#获取照片链接
def getPHOTO(urlb,ls):
ls.clear()
html = getHTMLText(urlb)
ls.append(re.findall('url="(.*?)"',html))
#下载图片
def downPHOTO(url):
root = "D://tupian//"
path = root + url.split('/')[-1]
try:
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(url)
with open(path,'wb') as f:
f.write(r.content)
f.close()
print("文件保存成功!")
else:
print("文件已经存在!")
except:
print("爬取失败!")
time.sleep(0)
main()
好啦!一切大功告成,我可以去我室友哪里显摆了!
其实我的代码还可以简写很多的,可是我觉得这样的话小萌新更容易理解!
Python是真的强大,我要继续学习了。
人生苦短,我学Python!
转载:https://blog.csdn.net/qq_42874244/article/details/82855171
查看评论