爬虫day6常见的反爬总结

本文总结了爬虫实践中常见的反爬措施,包括爬虫流程的各个步骤,如找接口、处理requests请求、使用selenium,以及应对英雄联盟皮肤爬虫、代理IP、自动登录等挑战。详细介绍了在遇到字体反爬等问题时如何应对。
摘要由CSDN通过智能技术生成

day6常见的反爬总结

一、爬虫流程

第1步:确定爬虫对象(爬哪个网页的数据)

第2步:找接口(网页检查,network-Fetch/xhr,刷新,点左下角name里的,看显示的preview有没有想要的信息,在Headers里面复制Request url)

  1. 有接口:直接对接口发送请求 -> 成功(直接json解析)
    -> 失败就进入下一步

  2. 没有接口,直接进入下一步

第3步:用requests直接对原始网页地址发送请求
1)请求成功 -> 解析数据(bs4、lxml)
2)请求失败 -> 尝试添加user-agent和cookie,成功就解析,失败进入下一步
第4步:用selenium打开网页,获取网页内容
1)请求成功 -> 解析数据(bs4、lxml)
2)请求失败 -> 找失败的原因,尝试解决失败的问题 -> 问题无法解决进入下一步
第5步:放弃,换一个目标

二、英雄联盟皮肤爬虫

import requests
import os


def get_all_hero_id():
    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    response = requests.get(url)
    return [hero['heroId'] for hero in response.json()['hero']]


def get_one_hero_skins(hero_id):
    # 1.对皮肤接口发送请求
    url = f'https://game.gtimg.cn/images/lol/act/img/js/hero/{hero_id}.js'
    response = requests.get(url)
    result = response.json()

    # 2.获取数据
    # 英雄名字
    hero_name = result['hero']['name']
    if not os.path.exists(f'./英雄皮肤/{hero_name}'):
        os.mkdir(f'./英雄皮肤/{hero_name}')

    # 所有皮肤
    for skin in result['skins']:
        # 获取皮肤名称和图片地址
        skin_name = skin['name'].replace('/', ' ')
        img_url = skin.get('mainImg')
        if not img_url:
            continue
        # 下载图片
        img_data = requests.get(img_url).content
        open(f'./英雄皮肤/{hero_name}/{skin_name}.jpg', 'wb').write(img_data)
        print('皮肤下载成功!')


if __name__ == '__main__':
    # 创建英雄信息对应的文件夹
    if not os.path.exists('./英雄皮肤'):
        os.mkdir(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值