爬取网页图片-Python入门:爬虫如何爬取网站全部图片

很多时候暴躁老哥上小图片网站,看到许多的小X图,热血澎湃想要下载下来,可视网站上那么多的图片一张一张的保存确实很是浪费时间和精力,所以今天就给大家带来一个简单的方法下载这些图片:Python爬虫.

爬取网页图片-Python入门:爬虫如何爬取网站全部图片

本次爬取内容为妹子网手段较为低级入门的低级,ps:只支持单个套图下载爬取网页图片,不支持整体下载

爬取网页图片-Python入门:爬虫如何爬取网站全部图片

在说说我的这个爬虫代码的设计思路:

爬取网页图片-Python入门:爬虫如何爬取网站全部图片

①当我们浏览这个网站时,会发现,每一个页面的URL都是以网站的域名+page+页数组成,这样我们就可以逐一的访问该网站的网页了

爬取网页图片-Python入门:爬虫如何爬取网站全部图片

爬取网页图片-Python入门:爬虫如何爬取网站全部图片

②当我们看图片列表时中,把鼠标放到图片,右击检查,我们发现,图片的内容由ul包裹的li组成,箭头所指的地方为每个套图的地址,这样我们就可以进入套图,一个这样的页面包含有24个这样的套图,我们用BeautifulSoup,处理。

爬取网页图片-Python入门:爬虫如何爬取网站全部图片

③我们进入套图,鼠标放到40处,右击,发现该套图图片的最大图片数为第十个span的值,而且每个套图的url同①原理相同为套图的url+第几张图片(如下图3为第二张图片),最后下载的url由一个class为main-titleDIV组成。提取img标签的src属性即可获得下载链接

from bs4 import BeautifulSoup

import requests

import os

base_url=\’/page/\’

#反‘反盗链’

header = { \’Referer\’:\’\’}

for x in range(11,20):

#盗取第十一页到19页图片

html_a=requests.get(base_url+str(x),headers=header)

soup_a=BeautifulSoup(html_a.text,features=\’lxml\’)

#解析第一个网页

pages=soup_a.find(\’ul\’,{\’id\’:\’pins\’}).find_all(\’a\’)

#选出a标签,如第二步的箭头所指的地方

b=1

for y in pages:

if(b%2!=0):

#因为一个li标签里面有两个a标签,所以要去除重复

html=requests.get(y[\’href\’],headers=header)

soup_b=BeautifulSoup(html.text,features=\’lxml\’)

#进入套图,解析套图

pic_max=soup_b.find_all(\’span\’)[10].text

#选出该套图的最大图片数

tittle=soup_b.find(\’h2\’,{\’class\’:\’main-title\’}).text

os.makedirs(\’./img/\’+str(tittle))

#制造一个目录

for i in range(1,int(pic_max)+1):

#循环,下载套图图片,

href=y[\’href\’]+\’/\’+str(i)

html2=requests.get(href,headers=header)

soup2=BeautifulSoup(html2.text,features=\’lxml\’)

pic_url=soup2.find(\’img\’,alt=tittle)

html_name=requests.get(pic_url[\’src\’],headers=header,stream=True)

file_name=pic_url[\’src\’].split(r\’/\’)[-1]

with open(\’./img/\’+str(tittle)+\’/\’+file_name,\’wb\’) as f:

#按32字节下载

for x in html_name.iter_content(chunk_size=32):

f.write(x)

b=b+1

print(\’ok\’)#判断程序是否结束

from bs4 import BeautifulSoupimport requestsimport osimport rebase_url=\’ header = { \’Referer\’:\’\’}for x in range(61,62): html_a=requests.get(base_url+str(x),headers=header) soup_a=BeautifulSoup(html_a.text,features=\’lxml\’) pages=soup_a.find(\’ul\’,{\’id\’:\’pins\’}).find_all(\’a\’) test=re.findall(\’\”href\”:\”(.*?)\”\’,pages) print(test) b=1 for y in pages: if(b%2!=0): html=requests.get(y[\’href\’],headers=header) soup_b=BeautifulSoup(html.text,features=\’lxml\’) pic_max=soup_b.find_all(\’span\’)[10].text tittle=soup_b.find(\’h2\’,{\’class\’:\’main-title\’}).text u=str(tittle).replace(\’:\’,\’\’).replace(\’!\’,\’\’).replace(\’?\’,\’\’).replace(\’,\’,\’\’).replace(\’ \’,\’\’) os.makedirs(\’./img/\’+u) for i in range(1,int(pic_max)+1): href=y[\’href\’]+\’/\’+str(i) html2=requests.get(href,headers=header) soup2=BeautifulSoup(html2.text,features=\’lxml\’) pic_url=soup2.find(\’img\’,alt=tittle) html_name=requests.get(pic_url[\’src\’],headers=header,stream=True) file_name=pic_url[\’src\’].split(r\’/\’)[-1] with open(\’./img/\’+u+\’/\’+file_name,\’wb\’) as f: for x in html_name.iter_content(chunk_size=32): f.write(x) b=b+1print(\’ok\’)欢迎大家关注小编,小编将不间断进行编程经验分享

本文转自51CTO博客 双歧杆菌 的个人博客

本文来自网络,不代表唯米智能立场,转载请注明出处。如有侵权请联系删除。http://www.weiseo.cc/b/3473.html

作者: 小易

上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 2013723@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部
在线客服系统