python爬虫正则表达式爬妹子图

系统 1520 0

声明:仅为了学习爬虫,请勿用于商业和恶意爬取数据,否则后果自负,作者享有该文章的所有解释权
原创文章:只需要在程序运行时输入一个数字,就会爬取1-该页数的图片,并且爬取小图对应的详情大图(套图),代码复制可用,下面是我爬取的部分数据。 python爬虫正则表达式爬妹子图_第1张图片
小图太过性感,这里就不截图了

            
              import requests
import re
import os

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
    #referer后面的链接是图片的主页链接,就是你点击某张图是网站判断你是从主页点过来的
    'Referer':'https://www.mzitu.com/'
}
url = "https://www.mzitu.com/page/"
def qsbk(page_nums):
    for i in range(1,page_nums + 1):
        page = str(i)
        # 拼接路由  http://www.qiumeimei.com/page/1
        page_url = url + page + "/"
        # 请求页面数据     注意url=上面修改过的
        response = requests.get(url=page_url,headers=headers)
        # 获取页面数据
        page_text = response.text
        #获取图片路径
        img_list = re.findall("data-original='(.*?)'",page_text,re.S)
        # 到详情页的路径
        big_img_list = re.findall('
              
  • .*?
  • ',page_text,re.S) # 定义一个目录 img_path = "./img" if not os.path.exists(img_path + page): os.makedirs(img_path + page) for k,j in enumerate(img_list): # print(k,j) 索引和url 每个索引和详情页列表的所有一样 # 列表页url # print(j) https://i.meizitu.net/thumbs/2019/08/190034_16b34_236.jpg filename = j.split("/")[-1] response = requests.get(url=j,headers=headers) small_img = response.content filenames = img_path + page + "/" + filename #持久化存储 这个存储的是每个页面的小图 with open(filenames,"wb") as f: f.write(small_img) print("正在下载第%s页数据,图片%s下载成功"%(page,filename)) # 先请求详情页的信息,只为判断总页数 detail_url = big_img_list[k] response = requests.get(url=detail_url,headers=headers) img_text = response.text # 页数 nums = re.findall(' ', img_text, re.S) if nums: num = nums else: nums = re.findall(' ', img_text, re.S) num = nums # 列表取值 number = int(num[0]) # 变量每个小图的详情页 for m in range(2,number): #首次访问详情页 detail_url = big_img_list[k] + "/" + str(m) +"/" response = requests.get(url=detail_url,headers=headers) detail_text = response.text #正在找到图片----------------------------该找详情页的大图了------------------------------ detail_imgs = re.findall('
    .*? .*?
    ', detail_text, re.S)[0] detail_name = re.findall('
    .*? .*?
    ', detail_text, re.S) # print(detail_imgs) #['https://i.meizitu.net/2019/06/16d01.jpg'] # print(detail_name) #['好身材就要秀出来'] response = requests.get(url=detail_imgs,headers=headers) img_texts = response.content img_name = detail_name[0] #文件夹名字 img_name_single = detail_imgs.split("/")[-1] # 单个文件的名字 new_path = "./img/{}/".format(img_name) if not os.path.exists(new_path): os.makedirs(new_path) new_name = new_path + img_name_single with open(new_name,"wb") as f: f.write(img_texts) print("%s下载完成"%img_name_single) print("%s下载完成"%detail_name) #下面这种写法只有在本程序中可用,不能import到其他程序中使用 if __name__ == '__main__': page_num = int(input("请输入要查询的总页数:")) qsbk(page_num)

    更多文章、技术交流、商务合作、联系博主

    微信扫码或搜索:z360901061

    微信扫一扫加我为好友

    QQ号联系: 360901061

    您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

    【本文对您有帮助就好】

    您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

    发表我的评论
    最新评论 总共0条评论