最近爱上了摄像,于是看了好多图片,找了很多网站,又想把它下载下来,所以就找回了很久以前写代码的手艺,抓取一下图片。下文仅给出一个实例。

查看网站

这里推荐一个高清壁纸网站彼岸壁纸http://www.netbian.com),可以免费下载。本次抓取仅实例抓取缩略图,不会对原图进行抓取。

image.png

查看网页链接

进入网站后翻页,寻找网页规律

http://www.netbian.com/index_1.htm
http://www.netbian.com/index_2.htm
http://www.netbian.com/index_3.htm

其列表主要特征是按照1-n进行排序

查找图片路径

通过查看网页源码,找到图片的地址,并且输出正则

获取地址的方式有很多,这里用正则比较简单,就先用正则了

<img src="(.*?)" alt="(.*?)" />

image.png

代码编写

用到的第三方库

  • requests
  • json
  • re
  • lxml
  • bs4

实例代码

import requests
import re  # 正则表达式
import json
from bs4 import BeautifulSoup  # BS
from lxml import etree  # xpath


def get_one_page(url):
    response = requests.get(url)
    response.encoding = 'gbk'
    if response.status_code == 200:
        return response.text
    return None


def down():
    html = get_one_page(url)
    pattern = re.compile('<img src="(.*?)" alt="(.*?)" />', re.S)
    items = re.findall(pattern, html)
    x = 1
    for item in items:
        img = 'http://pic.netbian.com' + item[0]
        title = item[1]
        print("正在下载第{0}张:{1}".format(x, title))
        x = x + 1
        r = requests.get(img)
        with open('D:\python\down\{}.png'.format(title), 'wb') as f:
            f.write(r.content)


if __name__ == '__main__':
    # 入口

    for i in range(2, 50):
        url = "http://pic.netbian.com/index_" + str(i) + ".html"
        print("正在下载第{0}页:{1}".format(i,url))
        down()
    print("爬取完成")

备注:本次代码是在win上写的,所以路径是‘\’,如果是mac或者linux则需要更换

实际运行

代码运行后,我们会发现才了每一个图片的下载情况

image.png

在down文件夹中出现下载好的图片

image.png

结束语

仅限学习,切勿侵犯他方利益。

最后修改:2020 年 11 月 26 日 12 : 45 AM
如果觉得我的文章对你有用,请随意赞赏