思路篇
目前常见的图片网站类型:
一、纯静态网站(无私奉献型,最容易爬)
二、相册链接有序,内部图片链接无序型
三、相册链接无序型,内部图片链接无序型
四、相册、图片链接均无序,且含有无关链接,坏链接,跳转链接型
五、随机型
——————————————————————————————————————————
一、纯静态网站
这种网站一般是个人搭建,没有多少资源,这种网站一般第一个相册链接是http://www.xiangche/1.html,第二个就是http://www.xiangche/2.html。然后内部图片链接可能就是http://www.xiangche/1-1.jpg,http://www.xiangche/1-2.jpg
使用两层for流水即可获取到每个图片的信息,而且报错率极低
———————————————————————————————————————————
二、相册链接有序,内部图片链接无序型
第一个相册链接是http://www.xiangche/1.html,第二个是http://www.xiangche/2.html。第一个相册内部图片链接可能就是http://www.tupian/sdf124fAA.jpg,http://www.alicdn/20230521-001.jpg
解题思路:
第一层for流水获取网页,接着通过查找标签的形式将img的src链接获取到
如下是获取一个相册内放在class="article-content clearfix"的div代码,并获取其中img标签的src(超链接)信息
response = requests.get(url=url)
html_str = response.text
divdakuai = BeautifulSoup(html_str, "html.parser")
div1 = divdakuai.find("div", class_="article-content clearfix")
yuanshilianjie = [link.get('src') for link in div1.find_all('img')]
———————————————————————————————————————————
三、相册链接无序型,内部图片链接无序型
解题思路:
参照二的方法,获取相册页的链接,然后再通过查找标签的形式获取其中img标签的src(超链接)信息
———————————————————————————————————————————
四、相册、图片链接均无序,且含有无关链接,坏链接,跳转链接型
解决思路:
在三的基础上,添加一些过滤手段,例如
在request中添加timeout并用try exceprt解决链接超时问题
try:
t = requests.get(url=yuanshilianjie, verify=False, timeout=5).content
name = 'A' + str(a) + '.jpg'
a = a+1
with open(f'we\\{name}', mode='wb')as f:
f.write(t)
except requests.exceptions.Timeout:
pass
———————————————————————————————————————————
五、随机型
这种网站无页数,相册无序,鼠标滚轮往下滚它就加载新的相册,相册里面的内容有一定概率跟之前是重复的。直接requests.get是得不到信息的。
解决思路:
通过import webbrowser引入模拟浏览器,通过在模拟浏览器内模拟发送鼠标滚轮指令来获取相册信息。并对相册链接进行判断,是否是重复的。