Python爬图片

一时无聊“乱”点,点到了个图片网站,一看到mz图就行爬!( •̀ ω •́ )✧

来分析一下网站

点一下第二页,网址后面就会多出 /page/2 。点第三页也是,那么把后面的数字改成1

发现可以跳回首页。

查看网页源代码,发现没有js加密。

开搞(滑稽)

导入模块

import requests
import parsel
import os

 请求一下网站

url = 'https://www.xxxxx.com/page/1'
response = requests.get(url=url)
response.encoding = response.apparent_encoding  # 防止乱码
print(response.text)

打印出来后发现没有乱码。

下面来解析一下

发现图片在div class="masonry" 这个大标签里面,每一张图片对应每一个article,图片就在article下的img里面,src就是图片地址title可以当图片名称,title是图片拍摄的日期吧大概(o゜▽゜)o☆ 

我们用xpath来定位一下图片。

@src是提取src里面的内容,也就是图片地址,可以看到有二十个对象 

 再来看看title

text()是获取文本,可以看到一样是20个(title对应图片,肯定是20个)

 那么我们用parsel库来转一下

selector = parsel.Selector(response.text)
print(selector)

img_url = selector.xpath('//*[@class="masonry"]/article//a/img/@src').getall()
title_url = selector.xpath('//*[@class="masonry"]/article//h2/a/text()').getall()
print(img_url)
print(title_url)

 getall()是获取所有。

看着有点难受,而且还在列表里面,我们要把它们提取出来

 现在是把它们一一对应,接着就是提取

可以看到已经提取出来了,如果有不懂我们要加【0】和【1】的,可以看我前面的文章

列表的使用

接着对图片的地址请求一下,然后转成content

创建一个文件夹用来存图片

filename = 'img\\'
if not os.path.exists(filename):
    os.mkdir(filename)

 意思是如果没有一个叫img的文件夹就创建一个。

爬一页就20张。。肯定不够看的,先来个20页!!!

for page in range(1, 21):
    url = 'https://www.xxxxx/page/{}'.format(page)
    response = requests.get(url=url)

然后就是保存

        with open(filename + title + '.jpg', mode='wb') as f:
            f.write(response_1)
            print(title, img_1, "爬取成功!")

效果:

完整代码如下:

import requests
import parsel
import os

filename = 'img\\'
if not os.path.exists(filename):
    os.mkdir(filename)

for page in range(1, 21):
    url = 'https://www.xxxxx.com/page/{}'.format(page)
    response = requests.get(url=url)
    response.encoding = response.apparent_encoding
    # print(response.text)

    selector = parsel.Selector(response.text)
    # print(selector)
    #
    img_url = selector.xpath('//*[@class="masonry"]/article//a/img/@src').getall()
    title_url = selector.xpath('//*[@class="masonry"]/article//h2/a/text()').getall()
    # print(img_url)
    # print(title_url)
    for zip_list in zip(img_url, title_url):
        # print(zip_list)
        img_1 = zip_list[0]
        title = zip_list[1]
        response_1 = requests.get(url=img_1).content
        with open(filename + title + '.jpg', mode='wb') as f:
            f.write(response_1)
            print(title, img_1, "爬取成功!")




最后:

一张一张看太麻烦了,直接弄成壁纸,然后几分钟切换,方便又养眼!

:very good!!

:必须good!!!!!

有些东西涉及到隐私,所以弄了码,请见谅!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值