爬虫获取网页中的图片
七月现男友又来了!
你还在在线重金求子吗?不对,求壁纸!
作为一名经历过从入门到放弃的爬虫小白,也是一名李现的忠实实力宇宙爱好学习的洗衣粉,在爬虫的路上,只有跌倒,跌跌跌……
下面将运用一连串七分熟的知识爬取一下李现的壁纸。
(害,在如何保存图片的问题纠结了一天,又不想查书又想纠结,人菜瘾大!)
(所以,代码自由就是不懂就问,能懂则懂。)
以随意搜到的壁纸网站为例
网址(url)
http://www.deskcity.org/search/%E6%9D%8E%E7%8E%B0
查看源码,主页图片源码在img标签中,运用正则表达式便可提取图片网址并解析到文件夹中
完整代码:
import requests
import re
import os
url='http://www.deskcity.org/search/%E6%9D%8E%E7%8E%B0'#壁纸网站地址
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48'
}#代理,应对简单的反爬机制
response=requests.get(url,headers=headers)#对网页发送请求
#正则匹配,response.text为获取到的HTML网页
items=re.findall('<img.*?src="(.*?)".*?>',response.text,re.S)
i=1
#遍历,解析网址
for each in items:
image=requests.get(each)#解析图片地址
dir = r'D:\image\LX' +str(i)+'.jpg'#创建保存路径,LX为图片名前缀
#若找不到该目录,便自动创建
if not os.path.exists('D:\image'):
os.makedirs('D:\image')
fp = open(dir, 'wb')#以二进制格式写入
fp.write(image.content)
fp.close()
i=i+1
代码运行成功,打开文件夹
学习永无止境,优质粉的我马上去学如何获取每一页的图片。
………………………………………………………………………………
男人说到做到,优质粉又来更新了!
经过一波探索,发现该网站每一页都有一个偏移量,如打开第一页
'http://www.deskcity.org/search/%E6%9D%8E%E7%8E%B0/list-1.html'
第二页
'http://www.deskcity.org/search/%E6%9D%8E%E7%8E%B0/list-2.html'
比较之下,发现每一页都有一个数字会发生改变
所以,综合对爬取链接组合为:
'http://www.deskcity.org/search/%E6%9D%8E%E7%8E%B0/list-'+str(offset)+'.html'
完整代码:
import requests
import re
import os
from requests.exceptions import RequestException
def geturl(url):
try:
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48'}#代理,应对简单的反爬机制
response=requests.get(url,headers=headers)#对网页发送请求
if response.status_code==200:
return response.text
return None
except RequestException:
return None
def save(html):
#正则匹配,response.text为获取到的HTML网页
items=re.findall('<img.*?src="(.*?)".*?>',html,re.S)
i=1
#遍历,解析网址
for each in items:
image=requests.get(each)#解析图片地址
dir = r'D:\image3\LX' +str(j)+'_'+str(i)+'.jpg'#创建保存路径,LX为图片名前缀
#若找不到该目录,便自动创建
if not os.path.exists('D:\image3'):
os.makedirs('D:\image3')
fp = open(dir, 'wb')#以二进制格式写入
fp.write(image.content)
fp.close()
i=i+1
def main(offset):
url = 'http://www.deskcity.org/search/%E6%9D%8E%E7%8E%B0/list-' + str(offset) + '.html' # 壁纸网站地址
html=geturl(url)
save(html)
if __name__=='__main__':
for j in range(1,4):
main(offset=j)
最后,查看一下文件夹
所以,你还会缺壁纸吗?
换汤不换药,不管什么网站,只要可以访问,以上代码都可以用,只要改一下网址,以及分析一下有几页即可,网址可用字符串拼接。
学习永无止境,重要的是有志同道合的人可以指点迷津,感谢好兄弟!