滑块验证码的尝试博客地址: https://cloud.tencent.com/developer/article/1191105
ActionChains方法:
move_to_element(to_element) ---- 鼠标移动到某个元素
click_and_hold(on_element = None) --- 点击鼠标左键,不松开
move_by_offset(xoffset, yoffset) ---- 鼠标从当前位置移动到某个座标
release(on_element = None) -- 在某个元素位置松开鼠标左键
perform() ---- 执行操作,这个很重要,调用上面的方法后,一定要执行perform才能真正执行
崔庆才大神的网络爬虫干货总结链接: https://cloud.tencent.com/developer/article/1366434
从抓取、解析、存储、反爬、加速五个方面介绍了Python进行网络爬虫开发的相关知识点和技巧,
一。 抓取
服务端渲染: 使用基本的HTTP请求库就可抓取, 应用最多的是requests
客户端渲染方法有四种:
1. 寻找Ajax接口, 通过设置代理来查看接口比如 Fiddler/Charles;
2. 模拟浏览器执行, 适用于网络接口和逻辑较复杂情况, 直接抓可见数据, 比如 Selenium, Spynner, pyppeteer, PhantomJs等;
3. 直接提取JS数据, 直接使用正则表达式;
4. 模拟执行JS, 直接执行相关的JS来完成逻辑处理和接口请求,比如Selenium, PyExecJS, PyV8, js2py等库
二、 解析
HTML解析: 正则、XPath、 CSS selector
JSON解析: Json库
智能解析: readability算法, 疏密度,Scrapyly自学习,深度学习
三、存储
文件: JSON, CSV, TXT等, csv, xlwt, json, pandas等
数据库: 关系型数据库,非关系型数据库, pymysql, pymssql, redis-py, pymongo等
搜索引擎: Solr, ElasticSearch 便于检索和实现文本匹配
云存储: 七牛云、阿里云、腾讯云等
四、 反爬 包括:非浏览器检测、封IP、验证码、封账号、字体反爬
封IP: 1. 手机站点、App站点;2. 使用代理; 3. 在代理基础上维护代理池;4. 搭建ADSL拨号代理
验证码:
1. 普通图形验证码, 使用OCR识别,机器学习、深度学习模型训练等,打码平台简便
2. 算术题验证码, 推荐 打码平台
3. 滑动验证码, 可以破解算法,也可以模拟滑动,或者对接打码平台(超级鹰),深度学习训练识别接口等;
4. 点触验证码, 推荐打码平台
5. 手机验证码,使用验证码分发平台
6. 扫二维码, 人工扫码或 对接打码平台
封账号:
1. 手机站或APP站点, 校验较弱;
2. 寻找无登录接口
3. 维护Cookies池, 使用批量账号模拟登陆, 实现链接:https://github.com/Python3WebSpider/CookiesPool
五、加速
多线程、多进程: threading或multiprocessing
异步: 使用asyncio, aiohttp, Tornado, pyspider
分布式: pyspider, Scrapy-Redis
优化: