吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9846|回复: 52
收起左侧

[Python 转载] 爬虫(妹子图)

[复制链接]
xjgg 发表于 2021-11-23 18:31
最近弄了个机器人
然后发现没有没有图片资源
所以就写了个爬虫,爬了一点图片
(第一次发帖。。。话不多说上代码)

import requests as rq
from bs4 import BeautifulSoup
import sys
import time
import os

class images():
    def __init__(self,dicts,head,imghead):
        self.dicts=dicts
        self.head=head
        self.imghead=imghead

    def getreques(self,url,head):
        return rq.get(url,headers=head)

    def getimgtable(self,data):
        print(BeautifulSoup(data,'html.parser').find_all('img'))
        return BeautifulSoup(data,'html.parser').find_all('img')

    def createdir(self):
        dir=sys.path[0]+'\\src\\'
        for path in self.dicts.values():
            if os.path.exists(dir+path)==False:
                os.mkdir(dir+path)
        return dir

    def writeimg(self,dir,name,img,page,i):
        f=open(dir+name+'\\'+page+'--'+i+'.jpg','wb')
        f.write(self.getreques(img.get('data-original'),self.imghead).content)

    def run(self):
        dir=self.createdir()
        for pages,name in self.dicts.items():
            for page in range(1,pages):
                i=0
                print('https://www.mzitu.com/'+name+'/page/'+str(page))
                for img in self.getimgtable(self.getreques('https://www.mzitu.com/'+name+'/page/'+str(page)+'/',self.head).text):
                    print(img)
                    if 'data-original' in str(img):
                        i+=1
                        self.writeimg(dir,name,img,str(page),str(i))

def run_main():
    dicts={
        193:'xinggan',
        30:'japan',
        35:'mm',
    }
    head1={
        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'accept-encoding': 'gzip, deflate, br',
        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
        'cache-control': 'max-age=0',
        'cookie': 'Hm_lvt_cb7f29be3c304cd3bb0c65a4faa96c30=1636799900,1636806558; Hm_lpvt_cb7f29be3c304cd3bb0c65a4faa96c30=1636806558',
        'if-modified-since': 'Wed, 10 Nov 2021 13:09:33 GMT',
        'sec-ch-ua': '"Microsoft Edge";v="95", "Chromium";v="95", ";Not A Brand";v="99"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
        'sec-fetch-dest': 'document',
        'sec-fetch-mode': 'navigate',
        'sec-fetch-site': 'none',
        'sec-fetch-user': '?1',
        'upgrade-insecure-requests': '1',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44'
    }
    head={
        'upgrade-insecure-requests': '1',
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; MIX 2 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36',
        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'accept-encoding': 'gzip, deflate',
        'accept-language': 'zh-CN,en-US;q=0.9',
        'cookie': 'Hm_lvt_450e019eee95b5c453f724272dbc091d='+str(int(time.time())),
        'cookie': 'Hm_lpvt_450e019eee95b5c453f724272dbc091d='+str(int(time.time())),
        'x-requested-with': 'com.i8b073894b8d0cf7a'
    }
    imghead={
        'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; MIX 2 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36',
        'accept': 'image/webp,image/apng,image/*,*/*;q=0.8',
        'referer': 'https://m.mzitu.com/',
        'accept-encoding': 'gzip, deflate',
        'accept-language': 'zh-CN,en-US;q=0.9',
        'x-requested-with': 'com.i8b073894b8d0cf7a'
    }
    images(dicts,head,imghead).run()

run_main()


使用方法只需要把代码复制到一个文件里面,然后修改后缀名,爬取的图片会放到你这个文件的相对路径下的src里面,分三类所以会有三个文件夹,我用了什么包,你就需要用pip install 什么包

免费评分

参与人数 6吾爱币 +5 热心值 +5 收起 理由
yiwangguli + 1 + 1 我很赞同!
氨基酚 + 1 + 1 谢谢@Thanks!
sargwa + 1 + 1 谢谢@Thanks!
一星一尘 + 1 我很赞同!
shou0823 + 1 + 1 这种一般用什么格式啊?
xyl52p + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

话痨司机啊 发表于 2022-5-19 14:55
sargwa 发表于 2021-12-12 11:35
www.mmzztt.com
获取的图片链接[mw_shl_code=html,true]
                    

111.jpg


图片地址是JS生成的,并且会验证referer,拥有防止跨域请求政策

免费评分

参与人数 1吾爱币 +1 收起 理由
sargwa + 1 谢谢@Thanks!

查看全部评分

话痨司机啊 发表于 2022-5-19 21:55
本帖最后由 话痨司机啊 于 2022-5-19 22:00 编辑
sargwa 发表于 2021-12-12 11:35
www.mmzztt.com
获取的图片链接[mw_shl_code=html,true]
                    

www.mmzztt.com通过主页地址算出来的图片地址,通过JS图片预加载,然后加载到网页里

所以思路就很简单了,构造加密函数,传入需要数据,生成图片地址,带着referer请求下载完事。

2.jpg

免费评分

参与人数 1热心值 +1 收起 理由
sargwa + 1 热心回复!

查看全部评分

herosyly 发表于 2021-12-30 15:21
sargwa 发表于 2021-12-12 11:35
www.mmzztt.com
获取的图片链接[mw_shl_code=html,true]
                    

我用DevTools花了挺久的时间找到关键所在了,这个网站并不是之前的根据分页进行请求了,而是直接用CryptoJs解密加密数据,从而得到一个图片数组,后续直接js响应对应的图片链接 还是挺复杂的

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
sargwa + 1 + 1 谢谢@Thanks!

查看全部评分

xyl52p 发表于 2021-11-23 22:30
本帖最后由 xyl52p 于 2021-11-23 22:32 编辑

感谢分享,我发现我这边的网络访问程序中的妹子图网站被reset了。
P.S. 粗看下来好像没有sleep,会不会被网站BAN ip。
starwar 发表于 2021-11-23 22:45
感谢分享。但妹子图网已经被墙了。
71q3M5cT9a 发表于 2021-11-23 22:51
核心是构建http头文件,其次 是对图片路径的分析。
tanzhilang 发表于 2021-11-23 23:18
感谢感谢。。
toutouxuejishu 发表于 2021-11-23 23:37
很单纯的我不知道妹子图是什么
头像被屏蔽
一星一尘 发表于 2021-11-24 00:06
提示: 作者被禁止或删除 内容自动屏蔽
skyadmin 发表于 2021-11-24 04:20
有点意思啊
周留伟 发表于 2021-11-24 07:55
先试试爬爬看,感谢分享
superccc 发表于 2021-11-24 08:04
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表