python程序设计⼼得体会感想-Python爬⾍开发的⼼得体会前⼀段时间由于想从⽹络上搜集⼀些数据来练习⼀下数据分析的技术,所以⼼中萌⽣了对爬⾍的研究念头。本⼈的⼯作就是和Python编程有很⼤的关系,于是就开始了爬⾍的研究之路。⼊门书籍就是范传辉⽼师的《Python爬⾍开发与项⽬实战》,不得不说这本书我个⼈认为还是写的⾮常好的。从头到尾由浅⼊深的说明了爬⾍技术的发展过程,⽽且能结合实际的⽤例更细致化的说明和理解爬⾍的运⾏过程,这本书还是很适合想要了解并上⼿写爬⾍的⼩⽩们,当然最好还是有⼀定的Python编程基础。
写这篇⽂章主要的⽬的还是对⾃⼰学习爬⾍的⼀个总结,学习的过程其实就是理论->实践->总结->再学习的过程,废话少说直奔主题。emc input接口
pycharmjson格式化小白学python买什么书⽆论是简单的爬⾍还是⼤型的爬⾍⽆外乎核⼼的部分就是五部分,URL管理器、页⾯下载器、页⾯解析器、爬⾍调度器和存储器。
URL管理器:记录已爬取的链接和未爬取的链接以及链接的去重
页⾯下载器:负责下载爬⾍请求的页⾯
页⾯解析器:解析并提取爬⾍所需的数据
调度器:负责协调爬⾍的运⾏
excel表格怎么自动排序存储器:负责持久化爬取的数据
源代码在线投屏初学者还是应该亲⾃动⼿写⼀写简单的爬⾍框架,这样会对爬⾍有更好的理解。我个⼈认为在这五部分⾥⾯页⾯解析环节相对⿇烦⼀点。因为页⾯的提取主要还是⽤到了正则表达式和xpath,对于页⾯的定位有时还是很头疼的。在爬⾍的进阶环节我们就可以了解和运⽤scrapy框架了,scrapy为我们解决了⼤部分的⿇烦,我们所做的就是重写页⾯解析的部分,就连翻页这样的问题都可以交给Rule和LinkExtractor来搞定。页⾯解析中的定位问题可以借助scrapy的selector搞定,selector提供了xpath等页⾯提取的⽅法。scrapy中你可以定义⾃⼰的Item把提取的元素持久化到数据库中,可以是关系数据库MySQL等,我⽤的是MongoDB,它的⽅便之处就是不⽤我创建表因为它是⾮关系型数据库可以直接将数据映射成相应的表,还是很⽅便的,存储的类型是BSON。
免费灯具网站源码好了,我们⼀旦写好了⼀个爬⾍就准备爬取相应的⽹站了。刚⼀运⾏发现⽹站给你拒绝了,⼀查原因是因为遵守了爬⾍的规则导致的,于是在scrapy的setting⽂件中把ROBOTSTXT_OBEY设置为False。爬⾏了⼀段时间后突然你发现被服务器redirect了,状态码302,这时应该意识到可能是被反爬⾍识别了,简单说⼈家服务器认为你不是“⼈”,你的⾏为是机器了所以⼈家把你搞了。这种时候多见的是redirect 到验证码的⽹页,说起验证码却是⼀个很头疼的事⼉,简单的验证码可以通过pytesser、tesseractOCR和PIL搞定,但是带⼲扰的验证码就没那么简单了。普通的captcha识别模块准确率很低基本没⽤,复杂⼀点的我在⽹上见到有⽤机器学习的⽅法来搞定,简单说就是通过⼤量的验证码样本
数据建⽴数学模型,通过不断的学习来预测验证码的值,这种⽅法的正确率还是很⾼的,但是研究起来⽐较复杂。没招了,我⼈⼯打码吧,可以通过selenium跳转⾄验证码页⾯⼿⼯输⼊验证码pass,这种⽅法虽然可解燃眉之急但是爬取的数据量⼤了的话也⽩扯,你总不能⼀直在那打码吧。像12306⽹站这么变态的验证码,让你怀疑⼈⽣。
爬不动了,怎么办啊?道路只有⼀条就是慢下来,像个“⼈”⼀样提取⼈家的数据,爬⾍是某种程度上对⼈家的⽹站负载的⼀种东西,增加了⽬标⽹站的负荷,先不说⼈家数据的隐私性,你对⼈家的服务器性能造成了⼀定的影响⼈家当然要反爬你了。好在scrapy提供了⾃动降速auto
throttle,尽量把速度降下来把download页⾯的速度也降下来,尽量“优雅”的获取他⼈的数据。如果数据量⼤的话还可以采取分布式的⽅式,多机部署多线程运⾏,scrapy可以结合redis实现分布式。
突破反爬的途径⽆外乎⼤致⼏种:User-Agent伪装、IP代理池、降速和Google cache等。
由于现在各⼤⽹站反爬的技术还是⽐较厉害的所以基本除了降速都不太乐观,就连降速⼈家都有招对付你,真是道⾼⼀尺魔⾼⼀丈啊。但是⽆论如何也阻⽌不了我们爬⾍⼤队的脚步的,因为我们是害⾍!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论