高手问答第 214 期 —— 和你聊聊 Python 绝技:爬虫之术

发布于 2018/10/10 00:32
阅读 7K+
收藏 17

OSCHINA 本期高手问答(2018 年 10 月 10 日 — 10 月 16 日)我们请来了@梁睿坤 为大家解答关于 Python 爬虫方面的问题。

梁睿坤,现任增增智能科技CEO,从事机器人、视觉智能、语音智能及 IoT 等技术的产品研发与企业经营方面的工作,曾任优晟网络、越维科技公司的CTO。虽然长期身任技术管理职位,但十多年来一直坚持参与第一线的研发工作。擅长敏捷开发模式,推崇端到端及多领域融合的个人技术发展路向,倡导实践先行的学习方法,乐于分享所学所悟,在 Python 与 Javascript 方面有深厚的理论基础与实践经验。

爬虫虽说并不是一门新的技术,但却是一门伴随互联网而生、实用性最强的一门技术。数据分析、大数据、机器学习都离不开数据的“喂养”。数据无处不在,唾手可得,但要从互联网这个无边无际的数据海洋中采集我们所需要的海量的数据却绝非易事,如何能精准、高效、合理、持续而低成本地从互联网中采集所需的数据,这就是爬虫系统要实现的最基本目标。

本期问题内容:

  1. 网络爬虫的应用方向
  2. 网络爬虫开发的关键技术点
  3. 网络爬虫系统的设计要点
  4. 部署网络爬虫的要点

或有其他相关问题,也欢迎大家积极提问。

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《虫术——Python绝技》一书。

购买链接:京东
OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。
下面欢迎大家就 Python 爬虫方面的问题向@梁睿坤 提问,请直接回帖提问。

加载中
0
博文视点
博文视点
该评论暂时无法显示,详情咨询 QQ 群:点此入群
2
Fover
Fover

@梁睿坤 如果目标网页用到了滑块验证码 你们是怎么解决的?

Xiaoshiyue
Xiaoshiyue
有第三方提供啊
1
喷子
喷子

@梁睿坤 我最想知道的是python这种执行效率低的语言,真的能被写起来简单这个优势盖下去吗,效率低代表着实现同样的负载/运算能力,需要更多的机器才能完成,是不是大公司都不在意这方面的成本,更早的退出功能要比少用物理机器重要的多?

m
moshengren
该评论暂时无法显示,详情咨询 QQ 群:点此入群
从入门到转行
从入门到转行
如果需求经常变动,我感觉还是py这种开发效率高的好一点,用其他语言实现,花费时间更长,成本更高(因为程序员工资高~~~)
梁睿坤
梁睿坤
最后,如果考虑到运行成本跑python也未必一定需要一堆的机器,那得最具体总是具体分析。到低需要多少机器来才适合你的项目那你们可以用Docker来做些运行环境具体测算一下。根据我的经验在Linux上跑python和ruby这类项目确实不需要太多担忧性能的问题。
梁睿坤
梁睿坤
另一方面,至于公司规模与语言选择也是没有必然联系的,我认为谈性能只能与“开发规模”和“需求的复杂性”相挂钩。如果您身在大公司的话那更应该考虑寻找一些在python方面的能人,毕竟取决程序好坏的最终因素是人而不是语言本身。
梁睿坤
梁睿坤
执行速度高的语言开发出来的程序也未必性能高。其次,python 由于学习曲线平缓语言简洁,第三方资源丰富在程序的总体开发时间上会比其它具有天生速度优势的语言来说会更有优势,毕竟大道至简,我们做开发也一样应该追求平衡而不是极端。
下一页
1
梁睿坤
梁睿坤

@Fover 你这是一个问得非常好的问题!对于验证滑块可以谓是现在反爬的一招“绝招”,之所以说它“绝”是它非常的麻烦,在此之前我也曾好好进行过公关,原本也想写到书中的但我的方法太过复杂,后来认为并不一定是一个好方法就略掉了。我讲一个思路,你可以试试。我的做法是有两种:

方法一:这个方法比较白痴但简单,首先是降低爬网的频次,然后采用ADSL拨号服务器更换IP,虽然说不可能完全避开验证框,但它出现的机率会小很多而且不怎么需要改代码。

方法二:进行鼠标模拟,滑块大多都在同一水平线上,也就是说是水平运动的,可以先锁定屏幕的Y值,然后先模拟mousedown等画面出现匹配图后截图计算出初始的mouseX和滑倒匹配位置上的mouxeX1,得到这个坐标后模拟鼠标滑动过去就行了。这个方法有点复杂,需要在编写之前收集大量的截图来观察一下滑动验证框的匹配位置和查看当前的HTML代码。

liverxing
liverxing
滑块验证知识一个,现在有图片验证,智能选择验证(例如阿里的数据风控服务的验证码功能),答案验证,拼图验证,这些你都绕不过去的。
Fover
Fover
谢谢解答。
0
clouddyy
clouddyy

@梁睿坤 能否利用pypy加速爬虫效率??

梁睿坤
梁睿坤
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
w
walk_lai

@梁睿坤 请问如何解决像淘宝商品页面那样,需要移动鼠标到相应位置才进行加载真正图像的情况呢?

捡垃圾的程序员
这个图片 好像并不是移到才显示处理吧 直接右键审查元素就能看到 地址复制出来 去掉第一个.jpg后面的后缀就是大图 正则应该就可以
0
从入门到转行
从入门到转行

@梁睿坤 请问如果需要实时采集国内A股数据,如何在保证质量的情况下降低成本(带宽,存储,服务器等)?

梁睿坤
梁睿坤
也就是说 240*3000 = 720000 一天内你得拿到72万的数据行,这数据一看不算大,但要考虑反爬因素如果你一分钟去并发个3000爬一次铁定被封,要估算到底要多少机器最简单的做法是要先看看对方封你的临界点是多少,如果500次就封的话,有10个独立IP就基本足够应付而且已经可以有冗余了。
梁睿坤
梁睿坤
你这个需求如果要赴诸实施的话将是一个极为庞大的工程。如果要将全A股接近3千支股票的实时数据拉下来,那可以先算算你的IO,每支股票按每一分钟刷新一次来计算的话,早盘是9:30到11:30共 2小时,120分钟,午盘也是2小时,那全天就是一共4小时 240分钟。
0
两江总督小号-IT王力宏
两江总督小号-IT王力宏
@梁睿坤 如何学习Python。。。java程序员
梁睿坤
梁睿坤
学python极为容易,由其从C#或者java转来过也不难,python 的参考书极多语法上几个小时基本上就能入门了,python 最难学的反倒是她那个以亿计算的第三方库,想快速入门是没有捷径的,实践才是王道,我的土办法就是先学语法,然后定一个自己感兴趣的课题,一边开发一边学。例如就写个小爬虫。
0
宇润-非洲black鬼人人得而诛之
宇润-非洲black鬼人人得而诛之
采集目标站有反爬虫封ip的话,代理ip一般从什么途径获取,成本怎么样?
梁睿坤
梁睿坤
你可以参考我书中 5.2.3 化身万千—蜘蛛世界的易容术 一节,里面有详细的介绍
0
e
e22333
@梁睿坤 您好,请问对于爬虫新人,您有哪些建议? 比如:注重点,知识面等
梁睿坤
梁睿坤
HTML、python 和Scrapy会是爬虫最重要的知识点,HTML,python的资料众多越了解对爬虫知识的掌握就越好,而后者则可以参考我书的一二章,里面有详细的介绍。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部