python爬虫实战——轻松学会电脑桌面壁纸爬取

python——Requests

一、写在前面

本文所需要的python库有:requests、pyquery、os、time。为保证代码的运行请先安装好对应的python库。详细安装说明:

  1. 使用pip 安装 requests
  2. 使用pycharm安装 requests
  3. pyquery 安装

二、项目讲解

本次我们需要使用到的网站为:https://pic.netbian.com/彼岸图网

效果展示

在这里插入图片描述
在这里我们爬取的内容有:图片的名字(保存图片的文件名),图片内容,并将他保存下来。

三、代码详解

import requests
from pyquery import PyQuery as pq
import os
import time


filename = "./data"   #定义图片保存的位置
base_url = 'https://pic.netbian.com/'  # 基础url
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36',
    'referer': 'http://www.netbian.com/'
}   # 添加headers,防止网页反爬取

def get_page(page):
    url = base_url + 'index_' + str(page) + '.html'
    response = requests.get(url, headers=headers)
    response.encoding = 'gbk'
    doc = pq(response.text)
    imgs = doc('.clearfix li a img')
    for img in imgs.items():
        yield {'url': img.attr('src'),
               "name": img.attr('alt')
               }
def save_img(img):
    url = base_url + img['url']
    response = requests.get(url, headers=headers)
    path = filename + "/" + img['name'] + '.jpg'
    with open(path, 'wb') as f:
        f.write(response.content)
        f.close()


if __name__ == "__main__":
    if not os.path.exists(filename):
        os.mkdir(filename)
    for page in range(1, 20):
        imgs = get_page(page)
        for img in imgs:
            save_img(img)
        time.sleep(1)
        print(page, 'has download!')
1、网页分析

首先,我们打开F12开发者模式(或者右键–>检查元素)
在这里插入图片描述

为了获得图片的详细信息,我们选中任意一张图片,获得其html网页代码。
在这里插入图片描述

从中我们可看见每一张图片的具体url都在<img>的src里面,因此我们只需要获得每个img,通过获取他的url便可以进行下载图片

为了获得更多的图片,我们再观察下一页的url。
在这里插入图片描述

可以发现,每个页面的url就是简单的:https://pic.netbian.com/+index_(page数).html。

所以有如下代码,我们将它封装在一个get_page()的函数中:

def get_page(page):
    url = base_url + 'index_' + str(page) + '.html'
    response = requests.get(url, headers=headers)
    response.encoding = 'gbk'
    doc = pq(response.text)
    imgs = doc('.clearfix li a img')
    for img in imgs.items():
        yield {'url': img.attr('src'),
               "name": img.attr('alt')
               }

这里,我们使用了pyquery来获得img元素,然后通过attr获得其属性值(名字,url地址)。

保存图片
def save_img(img):
    url = base_url + img['url']
    response = requests.get(url, headers=headers)
    path = filename + "/" + img['name'] + '.jpg'
    with open(path, 'wb') as f:
        f.write(response.content)
        f.close()

我们通过先前获得的名字来命名图片文件的名字,最后将它统一保存在./data文件夹中。

最后

if __name__ == "__main__":
    if not os.path.exists(filename):
        os.mkdir(filename)
    for page in range(1, 20):
        imgs = get_page(page)
        for img in imgs:
            save_img(img)
        time.sleep(1)
        print(page, 'has download!')

我们通过访问前20页的图片,将page用for循环遍历,最后通过调用之前的get_page()、save_page()函数,实现我们的彼岸图网的爬取。

相关资料

  1. pyquery的使用
  2. 图片的保存
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值