Cosplay美图爬取

python爬虫简单爬取

最近学习了爬虫,朋友说想看看关于cos的美图,好巧不巧找到了一个好的网站,废话不多说,下面就帮朋友拿图片。

基于基础爬虫

目标网站http://www.cosplay8.com/pic/chinacos/

首先要知道爬虫的步骤
1.请求
2.解析
3.保存

  • 基本思路
    首先请求
import requests
import re

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 '
                  'Safari/537.36 Edg/110.0.1587.41 '
}


def html_all_page(url):
    html = requests.get(url, headers=header)
    html.encoding = 'utf-8'
    data = re.findall('<li><a href="(.*?)">', html.text)  # 找出网页所有链接

for i in range(1, 2):  # 网页翻页
    url = f'http://www.cosplay8.com/pic/chinacos/list_22_{i}.html'
    html_all_page(url)

这里注意网页的第一页链接为http://www.cosplay8.com/pic/chinacos/
第二页链接为 http://www.cosplay8.com/pic/chinacos/list_22_2.html
http://www.cosplay8.com/pic/chinacos/list_22_1.html 这样写也可以到第一页,而有些网站不行

进入网页F12发现,每个链接只有后缀,所以我们要加上前缀
在这里插入图片描述

import os

for url in data:
	url_data = 'http://www.cosplay8.com' + url  # 合并链接
	url2 = requests.get(url_data, headers=header)  # 合并后的链接,再次请求每个链接
	url2.encoding = 'utf-8'
    # print(url2.text)
	url_page = re.findall('var totalpage = (.*?);', url2.text)  # 获得图片的页数
	img_name = re.findall('<title>(.*?)-Cosplay中国</title>', url2.text)  # 获得图片的名字
	for img_name in img_name: # 创建图片对应的文件夹
    	if not os.path.exists('cosplay8\\' + img_name):
        	os.mkdir('cosplay8\\' + img_name)
    
    print(img_name)
    # 这里和的后缀和上面的不一样,第一页不是为1
    for i in range(int(url_page[0])): # 生成图片每一页链接
        page = url_data.split('.html')[0] + f'_{i + 1}.html'.replace('_1.', '.')  
        print(page)
        img_save(img_name, page)  	

结果如下,24页对上了
在这里插入图片描述
刚好24页在这里插入图片描述

  • 然后就可以解析图片保存了
def img_save(img_name, page):
    img_get_all = requests.get(page, headers=header)  # 请求每一个图片链接
    img_get_all.encoding = 'utf-8'
    img = re.findall('把href里的(.*?)链接改为', img_get_all.text)  # 获得图片
    for img in img:
        img = 'http://www.cosplay8.com' + img  # 合并图片链接
        img_data_name = img.split('/')[-1]  # 保存图片的后缀名
        img_data = requests.get(img).content  # 获得图片数据
        with open('cosplay8\\' + img_name + '/' + img_data_name, 'wb')as f: # 保存
            f.write(img_data)
            print(img, '完成')
            f.close()
  • 最后结果
    在这里插入图片描述

  • 总结
    1.爬虫的思路要从小到大,从少到多。
    2.解析数据没有数据时到请求到的数据里解析,而不是网页上的数据
    3.保存数据图片用的后缀名不能一样,不然会一直覆盖保存
    仅供学习参考
    如有不足,请多指教

完整代码

import requests
import re
import os

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 '
                  'Safari/537.36 Edg/110.0.1587.41 '
}


def html_all_page(url):
    html = requests.get(url, headers=header)
    html.encoding = 'utf-8'
    data = re.findall('<li><a href="(.*?)">', html.text)  # 找出网页所有链接
    for url in data:
        url_data = 'http://www.cosplay8.com' + url  # 合并链接
        url2 = requests.get(url_data, headers=header)  # 合并后的链接,再次请求每个链接
        url2.encoding = 'utf-8'
        # print(url2.text)
        url_page = re.findall('var totalpage = (.*?);', url2.text)  # 获得图片的页数
        img_name = re.findall('<title>(.*?)-Cosplay中国</title>', url2.text)  # 获得图片的名字
        for img_name in img_name:
            if not os.path.exists('cosplay8\\' + img_name):
                os.mkdir('cosplay8\\' + img_name)
        print(img_name)
        for i in range(int(url_page[0])):
            page = url_data.split('.html')[0] + f'_{i + 1}.html'.replace('_1.', '.')
            print(page)
            img_save(img_name, page)


def img_save(img_name, page):
    img_get_all = requests.get(page, headers=header)  # 请求每一个图片链接
    img_get_all.encoding = 'utf-8'
    img = re.findall('把href里的(.*?)链接改为', img_get_all.text)  # 获得图片
    for img in img:
        img = 'http://www.cosplay8.com' + img  # 合并图片链接
        img_data_name = img.split('/')[-1]  # 保存图片的后缀名
        img_data = requests.get(img).content  # 获得图片数据
        with open('cosplay8\\' + img_name + '/' + img_data_name, 'wb')as f:  # 保存
            f.write(img_data)
            print(img, '完成')
            f.close()
            # 'http://www.cosplay8.com//uploads/allimg/230106/112879-230106114420-50.jpg'


for i in range(1, 2):
    url = f'http://www.cosplay8.com/pic/chinacos/list_22_{i}.html'
    html_all_page(url)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
cosplay喫茶在线是指在网上咖啡馆以cosplay为主题的虚拟平台。在这个平台上,用户可以扮演自己喜欢的动漫、游戏、电影等角色,享受和其他cosplayer们一起交流的乐趣。 cosplay喫茶在线作为一个全球性的社交媒体平台,吸引了许多coser(cosplay爱好者)的关注。用户可以在网站上选择自己喜欢的cosplay角色,在虚拟平台中和其他coser进行互动和照片分享。这为热衷cosplay的人们提供了一个展示自己的平台,能够与其他同样热爱cosplay的人们分享彼此的经验和创作。 在cosplay喫茶在线中,用户可以通过虚拟的场景与其他粉丝互动,创建自己的cosplay形象和自己喜欢的角色组合。用户可以借助平台提供的各种装饰和服装,定制自己的cosplay造型。此外,用户还可以参与各种社区活动,例如线上角色扮演比赛、线上聚会等。通过这些活动,用户能够结交到更多志同道合的朋友,共同探讨自己喜爱的角色和作品。 除了互动和分享,cosplay喫茶在线还为用户提供了一些教程和指导,帮助他们更好地理解和学习cosplay的技巧,提升自己的造型水平。用户可以通过观看视频教学和参与线上培训课程来学习如何制作服装、化妆等相关技能。 总之,cosplay喫茶在线为coser们提供了一个全新的虚拟平台,通过互动、分享和学习,让热爱cosplay的人们能够更好地展示自己的才华,结交志同道合的朋友,并共同追求cosplay的乐趣和潮流。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值