栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python爬图片

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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  这个大标签里面,每一张图片对应每一个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('//*[@]/article//a/img/@src').getall()
title_url = selector.xpath('//*[@]/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('//*[@]/article//a/img/@src').getall()
    title_url = selector.xpath('//*[@]/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!!!!!

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号