如何用爬虫爬取精美的图片!

起因: 因为要做和图像识别有关的东西,需要很多的图片,但我这个人很懒,又不想自己动手找。于是乎,我就打起了爬虫的主意。我开始找网上的各种爬虫教程和一些经典案例,但是我没有找到一个即简单完整的爬虫程序。没办法,我只有自己动手啦。如果你和我一样,想快速学会爬虫,编写出易于理解、完整且简单的小爬,你可以继续往下看看。
准备工作:
1、爬取的网站:wallhaven:https://wallhaven.cc/ 【该网站的图片高清幽美、令人赞叹,两个字"极好"】
类似于下面这张图,是不是还不错?
在这里插入图片描述
2、涉及到的学习内容
编写语言:python 【附上官网教程
python包:
(1)BeautifulSoup:BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。
(2)requests:作为用户角色,请求页面。
分析爬取内容:
1、分析主页面
主界面可以使用搜索,若想筛选出有雾的图像,可直接在搜索框中查找"FOG"
跳转页面后观察规律,url = https://wallhaven.cc/search?q=FOG&page=%s"%(i)是这样的。q是查询的参数,page表示第几页。
2、分析源代码的形式
目的很明确,需要高清的图片,因此,需要点击对应的图片,跳转到高清的图片页面中,然后再提取高清图片。
3、获取代理对象
User-Agent:通过Headers找到。
下面通过具体的代码,来解释整个流程。

from bs4 import BeautifulSoup
import requests
#用户代理,作为用户的角色访问网站
gHeads = {
    "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36"
}
#整个for循环用于控制图片展示页面(第几页)
for i in range(5,20):
    url = "https://wallhaven.cc/search?q=FOG&page=%s"%(i)
    print(url)
    html = requests.get(url,headers=gHeads)#请求页面
    html = html.content#获取源码
    soup = BeautifulSoup(html, 'lxml')#对界面进行解析
    href_all = soup.find_all( 'a',{"class": "preview"})#找到对应的a,且其class=preview
    for href in href_all:#打开高清图片的新页面
        href_url = href['href']#找到对应的href属性值
        #重复上述的源码获取和页面解析
        html4 = requests.get(href_url,headers=gHeads).content
        soup4 = BeautifulSoup(html4, 'lxml')
        img4 = soup4.find( 'img',{"id": "wallpaper"})#找到img标签,且id = wallpaper
        urlimg = img4['data-cfsrc'] #获取属性值
        #将图片下载到本地
        r = requests.get(urlimg, stream=True)
        image_name = urlimg.split('/')[-1]#获取图片名
        with open('F:/Image/%s' % image_name, 'wb') as f:#Image文件必须存在
            for chunk in r.iter_content(chunk_size=128):
                f.write(chunk)
        print('Saved %s' % image_name)
    print("end.....................")    

部分结果展示:
在这里插入图片描述
上面的过程较为简单,建议小伙伴们先测试一下,看效果,然后一步一步来理解。


若是有不理解的地方,可以在下方留言,我看到后会及时回复的。有问题咱一起解决,共同进步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章