一反爬措施及策略:
-
用于请求的headers
headers:在爬虫中添加headers(将浏览器的User-Agent复制到爬虫的Headers中,将Refere的值修改为对应目标网站域名) -
基于用户行为反爬虫
同一ip短时间内多次访问同一页面
使用代理ip
同一账户短时间内多次进行相同操作
每次请求后随即间隔几秒再进行下一次请求,有的网站可以通过请求多次,退出登录,重新登录来绕过 -
动态页面反爬虫
找到ajax请求,分析参数含义,然后爬取
ajax参数加密无法破解,使用selenium+phantomJS进行拟人操作 -
cookie:复制他的cookie
-
验证码:
输入式验证码:通过用户输入图片中的字母,数字,汉字进行验证
解决方法:识别出里面的内容,然后填入到输入框中,可以使用python中的第三方库 tesserocr。滑动验证码: 将备选碎片直线滑动到正确的位置 解决方法:使用selenium进行拟人操作, 操作步骤:selenium点击按钮,然后进行拖动,我们可以找到缺口位置,比较两张图的像素,设置一个基准值,如果某个位置的差值超过了基准值,那我们就找到了这两张图不一样的位置,从平涂的右侧开始并且从左到右,找到第一个不一样的位置时就结束,这时的位置应该就是缺口的left,我们用selenium拖到这个位置就行 点击式图文验证(12306): 解决方法:借助第三方接口来识别出相同的内容
二。headers中有啥:
User-Agent,referer,accept-encoding,accetp-language,cookie
防盗链(其中遇到过限制爬取的有):cookie,User-Agent,token
三。http协议中有:请求行 请求头 空行 请求体
四。http响应码:200 请求成功
3xx:重定向
300 自己选择重定向地址(最多允许五个)
301 所请求的页面已经转移到新的url
302 所请求的页面已经临时转移到新的url
4xx:
400 客户端错误
401 被请求的页面需要用户名和密码
403 对被请求页面的访问被禁止
404 无法找到被请求的页面
5xx:
500 服务器出问题
503 服务器过载
505 服务器不支持请求中指明的http协议版本
五。re模块
分组:小括号阔气来的就是一组
.*:贪婪匹配:会匹配尽可能多的字符
.*?:非贪婪匹配:会尽可能匹配少的字符
六。git命令:
git init 初始化项目所在目录
git status(斯打特斯) 查看本地仓库状态
git add 把要提交的文件信息添加到暂存区中
git commit 将暂存区中的文件提交到本地仓库中
git log 显示提交的记录
git revert 生成一个新的提交来撤销某次提交,此前的所有提交都会被保留
git mv 重命名
git rm 删除