一.scrapy文档https://www.osgeo.cn/scrapy/intro/tutorial.html1.pip install pipenv(安装虚拟环境pipenv)①pipenv --venv (查看虚拟环境)②pipenv graph(查看虚拟环境扩展)③pipenv --rm(删除虚拟环境)④pipenv shell (初始化虚拟环境)2.pip install Scrapy (安装Scrapy爬虫框架)3.scrapy startproject ArticleSpider(使用scrapy创建一个工程ArticleSpider)4.scrapy genspider cnblogs news.cnblogs.com(创建一个爬虫cnblogs)5.scrapy crawl cnblogs(启动爬虫,将命令封装成一个脚本,便于做项目调试,创建main.py文件)6.pipenv install selenium (安装selenium库,作用模拟用户在网站的操作,如点击、输入等)7.pipenv install undetected-chromedriver(安装undetected-chromedriver库。作用调起chrome浏览器,防止网站识别为selenium的操作)8.pipenv install requests(安装requests,网络请求)9.pipenv install pillow(安装pillow,图像处理)10.pipenv install mysqlclient(安装mysqlclient,mysql操作)11.pipenv install opencv-python(安装opencv图像处理)12.pipenv install numpy(安装numpy,机器学习算法库)13.pipenv install redis(安装redis)14.pipenv install fake-useragent(安装fake-useragent,user-agent库)15.pipenv install scrapy-redis (安装scrapy-redis,可创建分布式爬虫)二.在 VS Code 中,更改 Python 编译器环境:1. 打开 VS Code,打开一个 Python 文件。2. 按下快捷键 Ctrl + Shift + P (或者 macOS 上的 Cmd + Shift + P ),调出命令面板。3. 在命令面板中,输入“Python: Select Interpreter”,然后从命令列表中选择该命令。三.基础技术要点(重要)1.使用css选择器定位到页面元素2.获取cookie保存,并使用cookie3.使用selenium,使用undetected-chromedriver4.获取通过js加载的数据,包括js加载的html元素5.scrapy中items的定义和使用6.scrapy中yield使用只能是Request()请求和itmes的存储,yield->Request()时是url下载,yield->itmes时会在pipelines.py中处理数据7.itmes.py定义数据8.pipelines.py处理itmes中数据9.middlewares.py中间件,"requests请求中间件”①图片的下载,继承ImagesPipeline类,重写ImagesPipeline的方法②自定义数据本地保存。scrapy自带的exporters本地数据保存③数据异步存储到mysql数据库10.settings.py配置文件①ROBOTSTXT_OBEY协议,(需要将ROBOTSTXT_OBEY关掉,改成False)②ITEM_PIPELINES,(配置pipelines访问执行的类,访问类的权重)③IMAGES_STORE,(存储下载图片的路径)④IMAGES_URLS_FIELD,(需要下载图片的原始路径,itmes中图片对应的字段)⑤DOWNLOAD_DELAY,(限制IP次数的访问频率(秒单位))⑥RANDOMIZE_DOWNLOAD_DELAY,(设为True时,DOWNLOAD_DELAY*0.5~DOWNLOAD_DELAY*.15随机产生)⑦DOWNLOADER_MIDDLEWARES(“requests请求中间件”)⑧COOKIES_ENABLED,(爬虫第一个请求带cookie后,下面的所有请求跟随带cookie)⑨USER_AGENT,(所有强求携带User-agent(中间件的DOWNLOADER_MIDDLEWARES配置,middlewarws.py->RandomUserAgentMiddlware类随机生成的user-agent,USER_AGENT可注释掉))四.网站模拟登录和滑动验证识别,知乎网模拟登录拿到cookie解决方案,加大模拟登录的难度:1.识别出chromedriver。2.加登录验证1.undetected-chromedriver驱动最新版的浏览器,selenium操作登录获取cookie①selenium获取html元素2.此处记得修改scrapy的源码 selenium\webdriver\common\actions\pointer_input.py中将DEFAULT_MOVE_DURATION改为50,否则滑动很慢3.使用opencv识别验证4.使用第三方机器学习方法识别验证(百度EasyDL的“物体检测”:https://console.bce.baidu.com/easydl/model/objdct/models)①如何发布物体检测API:https://cloud.baidu.com/doc/EASYDL/s/3k38n3ej4②EasyDL版控制台③物体检测API调用文档:https://cloud.baidu.com/doc/EASYDL/s/Yk38n3erc④获取 Access_token:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu5.redis存储cookie五.通过CrawlSpider对招拉勾聘网站进行整站爬取1.scrapy中Rule和LinkExtractor的使用六.Scrapy突破反爬虫的限制1.突破反爬限制一:(不限制IP访问频率时是异步请求)①.User-agen模拟,随机更换User-agen②.限制IP访问的随机频率③.IP代理池,89免费代理:https://www.89ip.cn/④.登录校验码,获取cookie2.突破反爬限制二:(只能同步操作请求)①.通过selenium完全模拟浏览器操作,获取js网站动态数据七.Scrapy进阶开发(重要)1.selenium->webdriver动态网站的爬取2.undetected_chromedriver动态网站的爬取3.使用browser.page_source获取动态网站的全部数据(selenium操作)4.scrapy.selector获取页面元素(获取标签属性值::attr(value)。获取标签内容::text)(selenium操作)5.使用execute_script()执行js代码,以下示例是鼠标下拉刷新操作的js代码(selenium操作)execute_script("window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;")6.设置chromedriver不加载图片(selenium操作)7.chromedriver无界面访问(selenium操作)8.scrapy的启动与暂停,和重新启动(scrapy命令)①启动爬虫:scrapy crawl cnblogs(博客园) -s JOBDIR=job_info/001 按一次Ctrl+c:暂停;再次按一次Ctrl+c:启动;连续按两次Ctrl+c:强制停止。爬取过的url不会再爬取,暂停和强制停止后都是跟踪者上次停止后的url再次执行。②启动一个新的爬虫:scrapy crawl cnblogs -s JOBDIR=job_info/002重新启动一个新的爬虫关键是斜杠后面的值0028.将selenium集成到scrapy中①scrapy信号源(相当于vue中的生命周期)②接收scrapy信号源的dispatcher类库,需要pip install scrapy== 1.7版本才可以使用八.scrapy-redis分布式爬虫(将url放入到redis消息对列中执行)1.目录ScrapyRedis分布式项目2.settings.py配置文件①BOT_NAME,SCHEDULER,DUPEFILTER_CLASS(分布式爬虫必配置)②配置redis连接:REDIS_HOST = 'localhsot',REDIS_PORT = 6379,REDIS_PARAMS = {'password': 'xueXiang@!!*888_',}③分布式爬虫运行时,需要将第一个页面加入到redis消息队列中九.cookie池系统设置和实现,将模拟登录单独做成一个服务1.模拟登录服务①超级鹰验证码识别②移动验证码识别(百度EasyDL或者opencv)2.cookie检测服务十.scrapyd部署scrapy爬虫(打包本地的爬虫后给scrapyd运行)①pipenv install scrapyd(srcrapy爬虫服务,srcrapy必须在scrapy项目的运行环境下运行)②pipenv install scrapy-client(打包本地的爬虫工程)③在scrapy.cfg中配置deploy声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论