爬虫06.25"/>
网络爬虫06.25
昨日内容回顾
-
爬取商品数据并保存
selenium模块 bs4模块 openpyxl模块
-
爬取电影排行并保存
requests模块 bs4模块 openpyxl模块 # 针对电影详情数据有两种获取方式1.直接处理简介内容2.二次爬取更深层次的网页 '''豆瓣是有检测IP访问频率的机制'''ps:我们平时在编写代码的时候可以创建一个tests.py文件用于测试相当于我们写数学题目的草稿纸
-
爬取贴吧图片并保存
requests模块 lxml模块 文件操作 '''有检测IP访问频率的机制''' # 多次url抓取的操作思路 ps:图片数据的保存其实就是发送get请求获取数据即可
今日内容概要
- 验证码破解思路
- 知乎登录防爬措施
- b站视频数据爬取
- 红薯网小说数据爬取
- 爬虫框架之Scrapy(了解概念)
今日内容详细
验证码破解思路
1.图片验证码方式1:图形识别软件:Tesseract-ocr 模块:pytesseract# 该方式需要书写一定量的代码 并且图片模糊的情况下不好用方式2:第三方平台服务先用代码识别处理不行则改为人工处理# 省时省力不省钱方式3:自己人工智能当程序启动起来之后自己肉眼观察验证码
2.滑动验证码方式1:代码破解(一般不推荐)难度较大 编写困难 selenium模块方式2:第三方平台方式2:人工智能滑动自己滑动一下'''通过代码破解的时候滑动的速度不能太快'''ps:内部有检测速度的机制 太快了都会被判定为是程序
b站视频数据
"""
b站视频数据分为两种情况第一种情况视频和音频是分开存放的第二种情况音频视频一起存放
"""
1.地址栏输入视频地址
2.打开network研究数据来源的接口地址
3.请求接口地址获取json格式数据
4.解析json格式数据请求视频数据和音频数据
# 有很多网站关键性的数据需要我们不厌其烦的查找才可以获得
知乎登录防爬
知乎pc端需要登录之后才可以访问主页/ # 重定向到登录界面
知乎用户名密码登录之前使用的是图片验证码最近才改为滑动验证码我们研究图片验证码
"""稍微复杂一点的网站在爬取的时候都需要借助于浏览器的network检测"""1.知乎登录验证码有三类1.英文字母+数字show_captcha = True?lang=en2.中文汉字show_captcha = True?lang=cn3.直接没有跳过show_captcha = false
2.朝登录接口发送的数据全部都是加密的导致我们无法跳过代码构造数据发送 需要先破解加密的数据格式# 前端三剑客之后js可以书写逻辑代码
3.查找加密相关的js代码跟加密相关的关键字是encrypt"client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=%2B8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_https%3A%2F%2Fwww.zhihu%2Fsignin%3Fnext%3D%252F"client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1566371889615&source=com.zhihu.web&signature=849409fe69f76b28a7ebfa95f0acc784d7c812bf&username=+8618896530856&password=dadasdasdas&captcha=nngt&lang=en&utm_source=&ref_source=other_=%2F
'''如何判断一个字符串是否是加密的密文 无规律的数字字母组合一般都是'''
4.查找相应的加密算法代码sha1 hmac base64 加盐处理
红薯网小数数据
"""一段数据被加密说明对方不想让你看到内部真实数据 说明该数据肯定很关键"""
1.该网页禁用了鼠标右键方式1:通过键盘的F12方式2:浏览器设置禁用js代码运行(不推荐)
2.页面数据并不是在响应体中就有该数据是通过js等代码动态渲染的
3.通过network查找相应的js文件点击XHR筛选出用于交互的请求method: getchpcontentbid: 3052jid: 3317cid: 98805other:加密字符串content:加密字符串
4.服务端给浏览器返回了加密的数据 浏览器却能够展示出明文说明浏览器内部肯定有解析加密数据的代码解密一般关键字都是decrypt文章主题内容解析代码utf8to16(hs_decrypt(base64decode(data.content), key))
5.但是还缺少相应的文字上述代码仅仅解析了content 还有一个other没有解析utf8to16(hs_decrypt(base64decode(data.other), key))解析出来之后是一段js代码 这段js代码应该就是解析剩余文字的关键
6.动态渲染的文字无法用鼠标选中 还需要js注入
分布式爬虫框架下载
Scrapy框架
下载pip3 install scrapy
'''windows系统在下载该框架的时候可能会报错'''
# 如果报错需要按照以下策略解决
1.pip3 install wheel
2.下载.whl文件
3.将上述文件存放到C:\Users\用户名 文件夹下如果你不知道该地址 可以通过报错查看pip3 install xxx.whl # 提示你
4.pip3 install pywin32
5.pip3 install scrapy# 如何验证是否下载成功cmd窗口内输入scrapy即可
基本使用
"""什么是框架?"""
框架类似于房屋的钢筋结构
使用框架就相当于往已经创建好的文件中填写代码即可
使用框架的好处就在于节省创建环境的时间-新建项目-scrapy startproject 项目名字-新建爬虫-scrapy genspider 爬虫名 爬取的域名-项目目录介绍-spiders-所有的爬虫程序-items.py-类似于django的model类-middlewares.py-中间件-pipelines.py-持久化相关(数据存储)-settings.py-配置文件(关注:爬虫协议)-scrapy.cfg-部署相关-运行爬虫-scrapy crawl cnblogs --nolog
爬虫协议
网站的设计者在设计好网站之后会写一个协议robots.txt
该文件明确规定了网站哪些数据可以爬取哪些数据不能爬取
编写爬虫的工程师如果爬取了协议内规定不能爬的内容那么就触发了法律
网站的设计者可以起诉你!!!
我们的scrapy框架默认都是遵循该协议的
但是在编写爬虫的时候需要将配置注释掉 不能遵循该协议
优先级
深度优先一路走到黑再考虑分拆
广度优先先整体来一遍再慢慢深入
ps:还可以自定义优先级
作业
1.整理本周所有内容
2.针对所有的爬虫案例全部自己动手写一遍并将爬取到的数据全部考虑存储到excel中图片视频除外
更多推荐
网络爬虫06.25
发布评论