Python3 全局观的爬虫知识

整理于2020年10月下旬,献给不甘平凡的你

更多企业级爬虫知识请查收于:https://blog.csdn.net/weixin_45316122/article/details/109840745

 

目录

 

一:爬取

解决服务端渲染类型:

解决客服端渲染类型:

方式一:寻找ajax接口

方式二:模拟浏览器执行

三:一刀见血的提取js数据

四:模拟执行js

二:解析

三:存储

四:反反爬

五:加速(高效爬取)



想了想这个得分5步写爬取,解析,存储,反爬,加速

一:爬取

如何选取适当的方式来实现页面抓取

我所见页面大致只有2种渲染方式a

1.服务端渲染,页面结果直接返回。(静态页面)

2.客服端渲染,页面结果由js生成,页面可能还经过ajax等方式从后台获取。(动态页面)

解决服务端渲染类型:

直接使用requests

Trick:可以考虑看我的博客-------python3爬虫工具,将curl语法转化为python的requests爬虫    包你35秒爬出来

解决客服端渲染类型:

方式一:寻找ajax接口

1,Chrome、Firefox浏览器f12查看请求~~~~~本人两个浏览器交互使用

2,Fiddler抓包工具,注意需要设置代理(神奇的工具,你关了抓包工具代理也没了)

方式二:模拟浏览器执行

1.selenium驱动chrome,firefox等浏览器抓取

2.spynner/ghost.py依赖于pyqt

3.phantomjs无界面浏览器

4.pyppeteer自动化抓取

Trick:python版puppeteer

三:一刀见血的提取js数据

1.正则表达式提取关键的js.渲染数据都隐藏在html head的js变量里

2.使用debug,大致读懂js的流程,抠出相关流程的js

四:模拟执行js

1.selenium,使用execute—script执行js代码,return返回

Trick:请用下面三种常用的包运行js  python3 爬虫 中国土地市场网 破解js加密详解  (该文章中有使用示例)

2.pyexecjs,个人喜好用,因为支持phantomjs引擎

3.pyv8,淘汰玩意python2 用,还停止了维护

4.js2py,最简单的一种,直接能让python执行js代码

 

说了这么多,懂事的朋友应该发现了,上面都是说的网页版的

Trick:由于去年这个时候app端抓取经历的少,app逆向当时还没涉及,这里先占个坑,后面补上,想要学习app逆向的朋友可以留言

 

 

二:解析

目的:保留有效信息

常用匹配方式:

1.正则~~re库,万能方式,高效,编写不便

2.Xpath~lxml,Scrapy Selector库,最常用方式

3.jsonpath~jsonpath库,非常方便取json格式数据(虽然只会使用..方法)

4.CSS ~cssselect库(彻底放弃,xpath那么好用)

5.bs4~bs4库

~~来点真家伙

智能解析(啥,不会深度学习,那你和我一样学了一个假的python),你没看错,也没搞错,虽然我一个都没有弄过,逼还是要装起来~~

高级大牛肯定会说写规则这么麻烦,那我来个智能的吧。。。

方式一:readability,用它定义不同区块的不同标注集合,计算最可能的区块位置,如使用Newspaper库

方式二:疏密度判断,计算单位个数区块内的平均文本内容长度,根据疏密程度计算

方式三:Scrapely自学习,指定一个页面和提取结果样例,让它自学提前规则,提前同类页面(这个学一下,比较现实可行)

方式四:深度学习,使用深度学习来对解析位置进行有监督的学习,需要大量标注数据

~~据我所知的4中方式都吐出来了,可是我不会一种啊啊啊

Trick:当时确实不会没骗大家,现在可用方式四深度学习来实现智能解析,也就是大家所说的人工智能

 

 

三:存储

存储需要寻找合适的媒介来保存结果

常用方式:

1.文件存储,如json,csv,txt,图片,视频,音乐等

使用库:csv,xlwt,json,pandas,python-docx等

2.数据库存储,如mysql,mongodb,hadoop,kafka,hbase,Redis等

使用库:pymysql,redis-py,pymongo等等

3.云存储’,百度云,阿里云,腾讯云等(需要根据各自提供的接口上传数据)

4.浏览器存储,就像你写一个web里面加数据一样的,具体实现还得查资料

 

 

四:反反爬

参考链接:感谢你又一次的打开了我的博客,反爬在里面,你来不来  

https://blog.csdn.net/weixin_45316122/article/details/93790675(python3~~爬虫小总结)

 

五:加速(高效爬取)

对海量数据抓取,也是本博客最精彩的一部分啦

常见的措施:

1.多线程\进程(分情况,io密集用线程···cpu密集用进程(cpu多核处理))

io密集用线程,多线程库threading,GIL限制,你得知道生产者消费者模式,加锁与队列能有效优化,

2.异步~·~变成非阻塞式加速

asyncio(我见过一个博主,就是用这个库来实现异步),Twisted(基于驱动实现异步),Scrapy(基于twisted)等

3.分布式,多台机器跑肯定快啊

kafka分布式消息系统,Scrapy-Redis

4.优化程序,如解析,调度,去重等实现方式

这里就说说去重实现方式!!

# SPIDER_MIDDLEWARES = {
# 'scrapy_deltafetch.DeltaFetch': 100
# }
# DELTAFETCH_ENABLED = False

redis去重高效,BloomFilter省空间去重,参考简书小温候

5.架构加速,你怕不怕

Scrapy 单个项目对接好分布式,存储等配置后,部署到Scrapyd,再用Gerapy监控,完美

参考链接:再次感谢,你又给我点击了一次博客浏览。

https://blog.csdn.net/weixin_45316122/article/details/93887433(python3爬虫的运行状态scrapy+scrapyd +Gerapy分布式爬虫管理框架(转))

 

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值