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 osdef 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).contentopen(f'./英雄皮肤/{hero_name}/{skin_name}.jpg', 'wb').write(img_data)print('皮肤下载成功!')if __name__ == '__main__':# 创建英雄信息对应的文件夹if not os.path.exists('./英雄皮肤'):os.mkdir('./英雄皮肤')hero_ids = get_all_hero_id()for h_id in hero_ids:get_one_hero_skins(h_id)print('========皮肤全部下载完成==========')

三、requests使用代理IP

import requestsdef get_html(url):headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'}# 1. 使用代理: 给参数proxies赋值# {'https': 'ip:端口'}# 1)使用固定的代理ipresponse = requests.get(url, headers=headers, proxies={'https': '36.25.226.139:4513'})# 2)通过请求获取代理ip的地址动态获取最新的代理# ip = requests.get('http://d.jghttp.alicloudecs.com/getip?num=1&type=1&pro=&city=0&yys=0&port=11&time=4&ts=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=1&regions=').text.strip()# response = requests.get(url, headers=headers, proxies={'https': ip})# response = requests.get(url, headers=headers)print(response.text)return response.textif __name__ == '__main__':url = 'https://movie.douban.com/top250'get_html(url)# while True:#     url = 'https://movie.douban.com/top250'#     get_html(url)

四、selenium使用代理ip

from selenium.webdriver import Chrome, ChromeOptionsoptions = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})# 1. 使用代理
# --proxy-server=http://IP:端口号    (ip端口是https的ip)
options.add_argument('--proxy-server=http://122.6.202.214:4510')b = Chrome(options=options)b.get('https://movie.douban.com/top250')

五、requests自动登录

import requests# requests完成自动登录的步骤:
"""
第1步:在谷歌浏览器中打开网页完成登录操作,然后刷新页面
第2步:打开当前页面的检查,在network的All选项下,找到当前页面的请求,获取Request Headers中的cookie值
第3步:在用requests发送请求的时候给headers赋值,在headers中添加 cookie对应的键值对
"""
headers = {'cookie': '_zap=b7912ec1-8e24-4d72-81cd-8fa2a2b5f78f; d_c0="AECfz77blxSPTv9pswdcr3xSHE0eCEMj0Dc=|1646568427"; _xsrf=qy8EtuCtpOGgIUmA3g0qSi2edFqOUIBw; __snaker__id=kvuiOSuliPGkosHY; _9755xjdesxxd_=32; YD00517437729195%3AWM_TID=pJYUp8Detk5AUUUUFFc6upRtNshfmnQX; q_c1=51a6e1898c4d46a594865b3db1dd3e95|1647227093000|1647227093000; NOT_UNREGISTER_WAITING=1; gdxidpyhxdE=q6eDxuI%5CS11auZ9%2Be%5C%2BxIx%2F2cg96ULLZchHGSiL8EQvgYs9OmbeiyhhCXoa%5C%2BblJQfD%5CayzzA8oosyB%2FhPPMm7%2Fkd8W5prCdSYuppYUL5qdoyPdjsHcgA8pZgBquceXtX6di5Mu46C7dEKcHakVA7mxxjMZh%2Bre5j%2F4AQta4bulZ39y%5C%3A1647834647437; YD00517437729195%3AWM_NI=oe9bRvHOQTEjCNug5CHPzre%2BCdBGZr6dru1M9KaaTCyY5hZsiM2d%2FSXjfLKsl91VYoTN6x%2Fvc%2FWYtZWgHtA%2BkNpQdcQgt86C%2F1Vffl9dc8gqk08aF1%2Bp0LL%2BSZzsecFXbUI%3D; YD00517437729195%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee99e96f86e9ada5f97cbaac8aa3c84f878a9a85aa7afbeeac8cc97e8c989f8bb32af0fea7c3b92aadbbf783d17e8c919fb5c8628192bb88b8498c90b693e82181bc8ea8d97af6bcbe96b447fb95af82d749bb87fb89d979ab93fe85ae599cb6aaadca79b0e7ffb7dc659892fa99ae7ea1f199baf75295b98895c421a992c0b2e76993b9bcd9b549edef9a87e568fbbcadd9e67ba9f0f882c53be9b000adcf219186b694e8698688aeb6cc37e2a3; captcha_session_v2=2|1:0|10:1647833755|18:captcha_session_v2|88:Q0FUYjlIemk4MklmZlA5ZlVOWDczbGlhYjRabzMxME1Fc0N6Szl4aGVTQU5JQkdGUklNWFRBVVZtU0hYQUVvLw==|cf267f149c0b9509d0e424579194d94fc6ec1f57567afd34050dc2a47f14bacc; captcha_ticket_v2=2|1:0|10:1647833769|17:captcha_ticket_v2|704:eyJ2YWxpZGF0ZSI6IkNOMzFfZ2pLT21aR2FUbHdXWFo2SG9wTUY1OWRZTG0tcG1vcGlfNUtrUkpzUThJSmNlV2VJdVVzdEhWNks4TVNBcVhobEZPUkZMcjUuc3N1QXpmUzBHbnIuSUNIdjlnb04tdjdoMlBydUtGSmdmV2FYUUZ2SE10dUl0RU40TzRFQS14dEhtMXJRLWg3UHdRblRMVkt1VG1kX09oekdab0pzUGxUWGFmUVF1NzRfYjc4di1QUmlQVUJMR0s5TEhvTGpDX2JUMF9jNFllNlM1SVFYSGgtMHAwV1ZMR2IwMWVqMS5FdEg1ZzZHRUZNZWMwLU8uMXk3YnY2dzlHdGNmNEE1a3E2Ry5EOWJSVlN4QjRWWmZodU1Gdk54N2lvNkZNUjJCdmw4Q254R1NUeUhtLXI1Yl9xeEZPS00wLnJONjkweW14cTQ5MHNjUzBKeHBwUE9lY05BSDZyNV9Vb3ZxZkFkR191aEQwOGc5ZUkwR3k5X005QVkub3gxOS5QdE1GanQwc1dtNERVbVZwQ3ZJV3R4V21nUS5Nd0tVTk92U3N1ZFlmcXJGMmhIWjUyTXZZUzFLc1RQaGlTNTRQWDRETElCdXQuNmU0ZUpzUFUyUzBWeUJZUXE5WFZSOEUwYzE5MEVYX2x5cEJ2MVdManBzVXJlV0t3d19GcGhTLnguVnlGMyJ9|22db975942e5d8c1799fa7c70120378eed6a34bb8bdd00afa3c5eccf92436296; z_c0=2|1:0|10:1647833781|4:z_c0|92:Mi4xaW5CWUdRQUFBQUFBUUpfUHZ0dVhGQ1lBQUFCZ0FsVk50VUFsWXdEWFYyXzVOZVRzbGJmbVg4Mk1GNF95bUYtLWd3|9d5f40b82ca91b89a903d5d50df74ed66850c2b3ecf03d86510300f5eb729d96; tst=r; SESSIONID=hbQ6zfAEKL3cjwOoewSAbkpnJKR4GtTVNCDhhjrorQ2; KLBRSID=0a401b23e8a71b70de2f4b37f5b4e379|1647833814|1647833734','user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
response = requests.get('https://www.zhihu.com/', headers=headers)print(response.text)

六、selenium自动登录获取cookie

from selenium.webdriver import Chrome# 1. 获取cookie保存到本地
# 第一步:创建浏览器对象,打开需要自动登录的网站
b = Chrome()
b.get('https://www.taobao.com/')# 2. 手动完成登录操作
input('是否完成:')# 3. 获取cookie数据并且保存到本地文件中
cookies = b.get_cookies()
open('files/taobao.txt', 'w', encoding='utf-8').write(str(cookies))

七、selenium自动登录使用cookie

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys# 1. 创建浏览器对象打开网页
b = Chrome()
b.get('https://www.taobao.com/')# 2. 添加本地保存的cookie信息
cookie_list = eval(open('files/taobao.txt', encoding='utf-8').read())
for cookie in cookie_list:b.add_cookie(cookie)# 3.重新打开网页
b.get('https://www.taobao.com/')# 4. 进行后续其他操作
search = b.find_element_by_id('q')
search.send_keys('雪糕')
search.send_keys(Keys.ENTER)

八、瓜子二手车字体反爬

import requests
from bs4 import BeautifulSoup
import reheaders = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
url = 'https://mapi.guazi.com/car-source/carList/pcList?page=1&pageSize=12&city_filter=12&city=12&guazi_city=12&tag_types=18&versionId=0.0.0.0&osv=IOS&platfromSource=wap'
response = requests.get(url, headers=headers)table = {'0xe1d0': '7', '0xe325': '4', '0xe41d': '1', '0xe52e': '9', '0xe630': '2', '0xe76e': '8','0xe891': '5', '0xe9ce': '0', '0xeaf2': '3', '0xec4c': '6', '0xf88a': '7'
}
# hex(十进制数)  -  将10进制转换成16进制
all_car = response.json()['data']['postList']
for car in all_car:price = car['price'].split(';')new_price = ''for x in price:if x.startswith('&#'):new_price += table[hex(int(x[2:]))]elif x.startswith('.&#'):new_price += '.' + table[hex(int(x[3:]))]else:new_price += xprint(new_price)

爬虫day6常见的反爬总结相关推荐

  1. Python爬虫:常见的反爬

    常见的反爬 爬虫流程 确定爬虫对象(爬哪个网页的数据) 找接口 有接口:直接对接口发送请求 成功(直接json解析) 失败就进入下一步 没有接口,直接进入下一步 用requests直接对网页地址发送请 ...

  2. 爬虫之常见的反爬手段和解决思路

    1 服务器反爬的原因 爬虫占总PV(PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv)比例较高,这样浪费钱(尤其是三月份爬虫). 三月份爬虫是个什么概念呢?每年的三月份我们会迎接一次爬虫高 ...

  3. 爬虫中常见的反爬手段和解决方法

    每日分享: 欲成大树,莫与草争:将军有剑,不斩草蝇:遇烂入及时止损,遇烂事及时抽身.格局小的人喜欢诋毁和嫉妒,因为我不好,我也不想让你好.格局大的人都懂得一个道理,强者互帮,弱者互撕.人性最大的愚蠢就 ...

  4. python爬虫常见反爬措施_爬虫常见的反爬措施有哪些

    爬虫常见的反爬措施有三种: 1.header头部信息 解决方法: 加User-Agent值: 如果不加header头,部分网站服务器判断不到用户的访问来源,所以会返回一个404错误来告知你是一个爬虫, ...

  5. python网络爬虫系列(八)——常见的反爬手段和解决方法

    常见的反爬手段和解决思路 学习目标 了解 服务器反爬的原因 了解 服务器常反什么样的爬虫 了解 反爬虫领域常见的一些概念 了解 反爬的三个方向 了解 常见基于身份识别进行反爬 了解 常见基于爬虫行为进 ...

  6. 【爬虫进阶】常见的反爬手段和解决方法(建议收藏)

    爬虫进阶:常见的反爬手段和解决思路 1 服务器反爬的原因 2 服务器常反什么样的爬虫 3 反爬虫领域常见的一些概念 4 反爬的三个方向 5 常见基于身份识别进行反爬 5.1 通过headers字段来反 ...

  7. Python | 常见的反爬及解决方法,值得收藏

    我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起. 很多人学习python, ...

  8. 常见的反爬措施:UA反爬和Cookie反爬

    本文分享自华为云社区<Python爬虫反爬,你应该从这篇博客开启,UA反爬,Cookie 特定参数反爬>,作者:梦想橡皮擦. 通过前面的爬虫程序,你或许已经注意到,对于目标站点来说,爬虫程 ...

  9. Python爬虫六:字体反爬处理(猫眼+汽车之家)-2018.10

    环境:Windows7 +Python3.6+Pycharm2017 目标:猫眼电影票房.汽车之家字体反爬的处理 ---全部文章: 京东爬虫 .链家爬虫.美团爬虫.微信公众号爬虫.字体反爬.Djang ...

最新文章

  1. laravel conf/app.php
  2. MyBatis-Oracle-selectKey返回主键
  3. 使用Apollo通过WebSocket通过STOMP轻松进行消息传递
  4. Sublime Text 3 配置python交互运行环境的快捷键
  5. shell中返回值是1为真还是假_肝!Shell 脚本编程最佳实践
  6. OpenShift 4 Hands-on Lab (4) - 用ImageStream操作Image
  7. 浅谈Scala 2.8的包对象(package object)
  8. java的继承和访问_Java基础篇:如何解决成员的访问和继承?
  9. mysql 省份名排序_MySQL:如何利用用户变量进行分组排序并取top1数据
  10. PHP微信公众号支付弹出“NaN:undefined”解决方法
  11. 升级成员服务器-从Windows 2012升级到2016案例之2
  12. 2021年全国研究生数学建模指导
  13. 软件经济工程学重点大纲
  14. 《windows 鼠标指针文件 学习笔记》
  15. 浅析javaIO的原理过程
  16. c104win键被锁 ikbc,win10键盘锁住了怎么解开_win10系统键盘被锁定的解决教程
  17. JS中判断某个字符串/数组中是否包含某个值
  18. 从入门到成佛--电商平台搭建--前端教程--环境搭建
  19. 8、两种典型微处理器介绍
  20. 频繁发送socket命令返回:[WinError 10054] 远程主机强迫关闭了一个现有的连接

热门文章

  1. R语言实现LDA算法(鸢尾花)
  2. CSP 2021 入门级第一轮
  3. Unity添加GIF动画
  4. 【互动媒体】结课作业第一部分:文献综述
  5. Google AIY | Vision Kit开箱深入试用
  6. 关于MD5和SHA-1的简单的介绍
  7. 10大网络美女排行榜(组图)(*^__^*) ……
  8. 一个有趣的SQL问题。
  9. OpenStack T版—Neutron组件部署详解
  10. 联想小新设置指纹登录