使用框架(scrapy pyspider)有什么好处。感觉和自己手写脚本区别也不大,框架的主要优点是开发快吗?有没有哪些一般人不太会注意,但又重要的地方。
我希望在「不影响」其他用户的程度上尽可能的快,如果以 alexa 排名作为参考的话,一般来说并发数(下载速度)设置在什么程度比较好。
如何保证清洗完毕后的数据是正确的。现在我是先导入到别的数据库亲眼看一遍,之后才会导入主数据库。但其实也就看了一两页就不管了,有点拼运气的成分包含在内。有没有更专业点的办法
1
gouchaoer2 2018-05-22 18:57:56 +08:00 via Android
1,你想法很对,大部分人不需要框架,但是还是用起了框架
3,建立 ceated_at 为 timestamp,然后 select * from t where created_at >balabala order by rand () limit 20 ;这样采样 |
2
sheep3 2018-05-22 18:59:53 +08:00
1. 是的,我在公司的所有项目,都没有用开源框架
2. 并发数都是测出来的,每个网站的能力都不一样,建议还是不要太快了 |
3
frank065 2018-05-22 19:14:37 +08:00 via iPhone
1. 哪个顺手就用哪个,框架就是个已有的方便更改的模板,你自己总结出来有一套按自己的来没什么错。
2. 也在琢磨并发数量的问题。大部分是按照待爬数据量,项目进度来调整。 3. 总会有错误的,原始数据,老数据做好备份。 |
4
ooh 2018-05-22 19:19:19 +08:00
3.你清洗数据不 validate 那你的清洗指的是什么?
|
5
bnm965321 2018-05-22 19:32:32 +08:00 2
scrapy 有异步特性,能够轻松增加并发量,很多人写不错这种快速的程序的。
清洗数据一是可以用 scrapy 的 contract,二是用一些 schema 库(如 attrs)进行类型的处理,三是加入日志(可以搭建一个 sentry,很好用的一个服务,有爬虫经验的人都知道有时对方页面样式更改后爬虫就失效了,这是就要解析日志了,但是自己解析太麻烦,直接用 sentry 吧) |
6
Leigg 2018-05-22 19:54:20 +08:00 via Android
新手吧,项目中使用的框架最大好处是开发效率块,特别是大型爬虫,再一个就是工程化管理,比如文件统一存放,日志存储等。框架中谈不上数据清洗这个概念,因为都是对每条记录的简单判断处理,等你爬完数据后,比如是存的 excel,或者数据库
|
7
AX5N OP |
8
ml1344677 2018-05-22 20:04:47 +08:00
1 我觉得使用框架的话可以把爬虫高度结构化,后期维护也相当方便。
2 这个在写爬虫原型的时候可以测试下 |
10
Leigg 2018-05-22 20:22:38 +08:00 via Android
再使用一些科学计算库来对爬到得大量数据进行统一清洗。
使用框架也是有坏处的,比如它会固化你的思维,使你脱离框架后去爬取可能毫无头绪,或者代码效率低,不停的删改,会使你对线程进程一些技术点愈加生疏 balabala |
11
q9REUgpVVCU77pWj 2018-05-22 20:23:55 +08:00
- 一开始用过 scrapy,但现在还是自己写了 request,的确感觉区别不大。
- 并发偶尔用用,但前期不大用,因为不知道怎么抛出错误。。。加上好几个有反爬限制,速度要求也不很高,就还是单线了。 - 页面调整最直观的嘛就是报错。比如抓 json 的,没有 key 了。抓网页的,尽量条件写死一点,xpath 找不到,自然也就知道了。入库前稍微处理一下,该转类型的转一下,该整理的整理下,也很容易发现新类型或者错误。还有嘛就是爬完的数据要用,用用总会发现点毛病的。 |
13
itsme001 2018-05-22 20:40:49 +08:00
1. 临时任务随意,长久或一定规模用框架.框架的意义可类比成肩膀.我们都站在肩膀之上,谨慎造轮子.
你提到了 python 相关的一些东西.就这个具体来说.我从 scrapy 只支持 http1.0 就开始使用,scrapy 在定制爬虫方面流行,他提供了相当多脚手架,非常的适用.反观我以前了解的一些用 nodejs 裸写爬虫的,已经不多了. 优化方面举个例子,scrapy 缓存了 dns.你从 requests 裸写,需要借助 dnsmasqd 这类东西. 2. scrapy 自带 autothrottle,可配置参数自动调节请求快慢. 当然 scrapy 也有他的不足,但 scrapy 及其小改,足够适用于绝大多数场景了.对于 scrapy 不足的场景,我考虑 golang. |
14
congeec 2018-05-22 20:46:49 +08:00 via iPhone
1,框架帮处理了好多小问题,比如 throttling,cookies,cache。自己写又要花时间。scrapy 吃 CPU,吃内存。pyspider 和 scrapy 都够 gui 管理工具
2, 同问 3,数据漏掉了,只能改代码重爬。脏数据可以用 openrefine,pandas 之类的做数据清晰 |
15
scriptB0y 2018-05-22 23:33:42 +08:00
3 脏数据担心的话花点时间自己写点验证吧,爬虫的脏数据问题我觉得很难 100%避免,没必要追求完全正确,有些是可以发现了再补救的,收益其实会更高一些
2 一般可以看下网站有没有 robots.txt ,不过网站不写的话你也很难知道承受能力,还是尽量不要太快吧 1 @congeec 说的这些问题其实 requests 全都做了,里面有 ConnectionPool, PoolManager,也有客户端 session 自动管理 cookie。爬虫不是很需要框架,其实一个任务队列,很多 worker,一个 scheduler 就够了。不用框架开发更快一些,限制更小,等你有特定需求、自己实现起来困难的时候再调研一下哪个框架满足你的要求也不迟。 |
16
nine99 2018-05-23 23:13:18 +08:00
简单的是不需要的,特别是只要爬一次的。大型的爬虫,都是分布式的,你不用框架就得自己实现一遍。
|