欢迎光临
我们一直在努力

爬虫爬取美女图片

前言

学完正则后就学习了爬虫篇章,在学前已定下了三个待爬网站,昨日已经完工,自学爬虫详细过程及实现已写以成文,但大部分文章CSDN上不让发,写文章一是为了记录方便来时翻阅,一是分享供他人借鉴,爬取了两美女网站,还不错,第一个文章目的达成了,第二个就靠分享来实现咯

简介

第一个网站爬取了一页,压缩下来有69M左右,之所以不多爬,是因为身体吃不消,主要是用不着,需要的话改下请求参数即可,第二个网站禁止按键右键,但无伤大雅,爬取了清纯美女前10页,还有清新美女专栏,爬取了一页,稍微改下url即可

第一个网页源代码

# 1.来到美女图片网页,然后查看网页源代码确认是服务器渲染,然后获取源代码,批量提取高清大图页面链接地址
# 2.通过对两个高清大图链接地址定位比较,找到了共有的定位条件,然后获取链接

import requests
import re
from bs4 import BeautifulSoup
import time
import os

url = 'https://www.mn52.com/meihuoxiezhen/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

resp = requests.get(url,headers=headers)

# 把源码交给bs
main_page = BeautifulSoup(resp.text,'html.parser')
h4List = main_page.find_all("h4")
for i in range(-1,1):
    h4List.pop(i)
# print(h4List)  # 测试用的
p = re.compile(r'"(?P<href>.*?)"')
for item in h4List:
    child_href = 'https://www.mn52.com' + ''.join(p.findall(str(item))) # 将bs4.element.Tag对象转为string对象
    # 拿到子页面的源代码
    child_page_resp = requests.get(child_href,headers=headers)
    # 文件夹命名
    p_name = re.compile(r'<div class="w740">.*?<h1>(?P<img_name>.*?)</h1>',re.S)
    img_name = p_name.findall(child_page_resp.text)
    img_name_f = ''.join(img_name)
    dirs = 'D:/python_img/' + img_name_f
    # 如果不存在这个文件夹就创建这个文件夹
    if not os.path.exists(dirs):
        os.makedirs(dirs)

    # print(img_name) # 测试用的
    # print(child_page_resp.text) # 测试用的
    # break
    # 把源代码交给bs
    child_page = BeautifulSoup(child_page_resp.text,'html.parser')
    imgList = child_page.find('div',id='piclist').find_all('img')
    # print(imgList)  # 测试用的
    num = 1
    for item in imgList:
        src = 'https://www.mn52.com' + item.get('src')
        # 图片
        img_resp = requests.get(src)
        # img_resp.content # 这里拿到的是字节
        with open(f'{dirs}/{num}.jpg','wb') as f:
            f.write(img_resp.content)
            num += 1
    print('over!!!')
    time.sleep(1) # 缓一秒爬取
print('Game Over!!!')
resp.close()

第二个网页源代码

# 1.拿到主页面的源代码,然后提取到子页面的链接地址(这里可以先在网页打开子页面获取链接,然后反向定位在网页源码具体处)
# 2.正常情况下请求子页面源代码,然后获取链接,但这个有些不一样,该网站已经分好类了,所以不从首页爬起反而更高效
import os.path

import requests
from bs4 import BeautifulSoup
import time

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
num = 1

# 爬取 清纯少女 前10页图片
while num <11:
    url = f'https://www.vmgirls.com/pure/page/{num}'

    resp = requests.get(url,headers=headers)
    # print(resp.text) #测试用的

    # 把源码交给bs
    main_page = BeautifulSoup(resp.text,'html.parser')
    aList = main_page.find_all('a',class_='list-title h-2x')
    # print(len(aList)) # 测试用的
    for a in aList:
        a_href = https://www.52pojie.cn/a.get('href')
        # print(a_href) # 测试用的
        child_page_resp = requests.get(a_href,headers=headers)
        # print(child_page_resp.text) # 测试用的

        # 把源码交给bs
        child_page = BeautifulSoup(child_page_resp.text,'html.parser')

        img_name_f = child_page.find('title').string # 获取title标签下的文本
        # print(img_name_f) # 测试用的
        #文件夹命名
        dirs = 'D:/Python_image/'+img_name_f
        # 如果不存在该路径,那就创建一个
        if not os.path.exists(dirs):
            os.makedirs(dirs)

        imgList = child_page.find('div',class_='nc-light-gallery').find_all('a')
        imgList.pop(0)
        count = 1
        for item in imgList:
            src = https://www.52pojie.cn/item.get('href')
            # print(src) # 测试用的
            # 图片
            img_resp = requests.get(src)
            with open(f'{dirs}/{count}.jpg','wb') as f:
                f.write(img_resp.content)
                count += 1
        print('over!!!')
        time.sleep(1)  # 缓一秒爬取
        # break # 用于测试
    num += 1
    break # 用于测试
print('======Game Over!!!======')
resp.close()

成品分享

https://wwz.lanzouw.com/b031oobti 提取码:3jvl


补充两点

  • 请做一个善意爬虫,毕竟取之于民
  • 任何蓝奏链接打不开都可以以下方式打开,以上面这个蓝奏链接为例,可以改为https://www.lanzou.com/b031oobti 提取码不变
赞(0) 打赏
未经允许不得转载:哈哈网 » 爬虫爬取美女图片

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏