![]() |
1
PTLin 269 天前 ![]() 我感觉主要就两种,一种单解析 html 的库,一种 WebDriver 的库,你对着你的语言看着选就行
|
2
LoNeFong 269 天前 ![]() scrapy
|
![]() |
3
yekern 269 天前
python: scrapy
go: gocolly/colly |
4
centralpark 269 天前
不推荐用包括 scrapy 在内的任何框架。参见: https://www.zhihu.com/question/293589348
|
5
vdrapb 269 天前 ![]() java jsoup
|
6
yvescheung 269 天前
我用 playwright
https://github.com/microsoft/playwright-python |
![]() |
7
xiangyuecn 269 天前 ![]() 手撸,日常简单使用:浏览器控制台 + 内置 XMLHttpRequest😂 日常爬攒劲小视频 m3u8 里面的 ts 文件🐶
|
8
monsterx2a 269 天前
@centralpark 简单看了下里面内容, 不推荐的原因有:
|
9
monsterx2a 269 天前 ![]() 1. 太重了, 杀鸡用不了牛刀
2. 对初学者不友好, 其实跟着文档,开箱即用了 3. 太快了,scrapy 不是可以通过配置来改变规则的吗? 4. 封装过度,细节不易控制。scrapy 里面的日志很详细的, 并且 python 里面是动态类型,增加猴子补丁的方法很方便。 这是我对你这个问题的几个疑问。 不知道是不是我没有理解里面的意思。 我一直都用 scrapy 来做爬虫的 |
10
monsterx2a 269 天前
并且上面提到爬虫重点是策略, 可是 scrapy 都具有的, 可以通过 headless 来控制, 甚至输入验证码等
|
![]() |
11
libook 269 天前 ![]() 熟悉前端开发的话,可以用 Puppeteer ,因为核心思路就是用脚本自动控制 Chrome 浏览器,所以不会有兼容性问题,爬虫检测也很容易绕开。我基本都是用这个来做爬虫。
|
![]() |
12
zhangkunkyle 269 天前
根据我的经验,大规模分布式爬虫,都是不用框架自己设计,因为涉及到 html 、json 、app 等类型的解析,列表页详情页的处理,反爬处理,文件下载,简单清洗,代理使用等等,一般都是把每个功能都拆分开,使用消息队列或者接口等方式来沟通,还要和业务结合。没有推荐的教程,如果基本的包都会用,那就是架构设计问题了
|
13
AndyChina 269 天前 ![]() 如果需要批量写爬虫, 直接使用 scrapy, 迭代这么多年的开源项目, 帮你处理并发/重试/cookie/任务调度/指标统计等一系列问题, 有啥不满意的, 别听他们什么薄封装, 厚封装, 根本就是懒得翻文档, 只好重复写轮子罢了
框架的意义就在于帮你模块化处理各种事情, 用户只需要关注处理具体的 http 请求, 当在使用中逐渐熟悉 scrapy, 就会了解设计的精妙之处, 如果不满意之处, 也可以自由添加自己的功能 当然, 如果你只是想临时写一个小的爬虫, 并且不熟悉 scrapy, 那直接用 requests 就很合适 如果追求极致底层, 那应该用 urllib😊 |
14
ccraohng 269 天前 ![]() |
15
streamrx 269 天前 via iPhone
框架根本就不重要, 爬虫唯一难的就是逆向 js,逆向 app 只有逆向是爬虫的核心 其他的步骤是个人都能写出来
|
![]() |
16
LitterGopher 269 天前
就是 requests + beautifulsoup ,没有框架(大概是我写的内容都比较简单的原因吧)。
|
17
whooami OP 感谢各位推荐及建议,只是感觉重新造轮子时间成本有点高
|
18
whooami OP |
![]() |
19
coderluan 269 天前
scrapy ,但是不建工程,只写单文件脚本,有时候怕出事就用油猴脚本前端爬。
|
![]() |
20
patz 269 天前 ![]() 教程强烈推荐崔庆才老师的 [Python 3 网络爬虫实战] ,外国关于爬虫的教程和书籍很零碎,就是看了这书学到了全面的爬虫技术! https://python3webspider.cuiqingcai.com/
|
21
yvescheung 269 天前 ![]() @whooami 不会,playwright 用的是自己的浏览器驱动
|
22
Masterlxj 269 天前
不用框架,纯手撸
|
23
damila 269 天前
纯用 node 爬,其实已经基本满足需求了。另外 puppeteer 真的是神器,可以爬很多原来爬不了的东西。
|
![]() |
24
liylcn 269 天前
@xiangyuecn 好兄弟,借一步说话
|
![]() |
25
enchilada2020 269 天前 via Android ![]() 一个疑问 解析 HTML 之类的 JS 岂不是比 Python 更如鱼得水 原生 Web API 拿来就用 为啥都喜欢用 Python 来写爬虫?
|
![]() |
26
lambdaq 269 天前
手搓
|
![]() |
27
wjx0912 269 天前
Puppeteer +1
|
![]() |
28
wjup 269 天前
requests + beautifulsoup 纯手撸,没写过复杂的爬虫。也就爬取点自己感兴趣的玩玩
|
![]() |
29
tingyunsay 269 天前
当年我一个人用 pyspider 自己改写了下接到公司平台,维护了两百多个爬虫脚本,不过原作大佬已经不维护了,但是应该还能用
|
30
jackOff 269 天前
我爬虫一直都是手撸,因为这样子门清,知道大概频率和强度,和楼上那位提议不使用爬虫框架类似的心态,我主要是怕触发铁窗泪成就,大多数情况下就是 requests 加正则去匹配数据,稍微难搞就用 beautifulsoup 。偶尔需要一点点效率就用一次异步。再复杂的脚手架就没玩过了
|
31
pzj4437 269 天前
|
![]() |
32
777777 269 天前
为什么都不考虑 go 写
|
33
dcsuibian 269 天前
@enchilada2020 我就是都用 js 写的,确实更加如鱼得水。尤其是学到的前端知识可以高度复用,而且对于 puppeteer 这种无头浏览器来说,js 还是一等公民
|
![]() |
34
aosan926 269 天前
Java ,简单的直接 Http 请求,复杂的用的 selenium
|
![]() |
35
danbai 269 天前
|
![]() |
36
Belmode 269 天前
Java webmagic
|
![]() |
37
justin2018 269 天前
|
![]() |
38
eluotao 269 天前
如果是业务需求,可以接触 python 的 scrapy ,虽然很多人都不推荐,但这适合大多数入门的人,这个框架可是帮我拿下一套房的大功臣。
针对业务:能用 and 稳定就足够,性能不够多开就好。 针对个人兴趣:也建议走一遍 scrapy 的流程,慢慢就会把一些核心的或者功能没那么复杂的爬虫任务,单独拆分自己编写,再配合 cron 和 青龙面板 就能解决了 任何技术最终都是要变现,能变现就是好技术。不一定要选择最优的方法,最牛的技术。 |
39
whooami OP @yvescheung 嗯嗯,看到文档了
|
40
whooami OP 看出来了,都是高手啊,感谢各位的建议。还有很多手写的,厉害厉害
|
![]() |
42
shanghai1998 269 天前
八爪鱼,真好用
|
43
alinwu05 269 天前 via iPhone
用 PHP 做,选一个浏览器的库,前后端界面一把梭
|
44
HankLu 269 天前
写爬虫,救不了中国
|
![]() |
45
wellerman 268 天前
PHP 加个 DOM 库,很快。
|
![]() |
47
llsquaer 268 天前
requests 足够 不用去学其他框架了..大概率根本用不上... 需要模拟的话 playwright 够用了
|
48
yrj 268 天前
pyspider ,作者也在这个社区。不过好久没更新了。
|
49
wocao666 268 天前
scrapy+playwright
|
50
wocao666 268 天前
千万不要用 splash ,本人已经踩过坑
|
51
bigha 268 天前
requests 爬遍天下,遇到反扒的就加上 nodejs 一起
不过个人喜欢把 js 的算法用 python 重新实现一边 |
53
whooami OP 手工汇总排名:3 票以上
1 、自己手工写的(包括 requests/XMLHttpRequest 之类的)(各各身怀绝技,都是大牛) 2 、scrapy ( 14+) 3 、Puppeteer ( 6+) 4 、playwright (4+) |
![]() |
54
blankmiss 268 天前
爬虫 最难的不就是风控 和 逆向吗 其他有什么区别吗
|
![]() |
55
libook 268 天前 ![]() @whooami #18 Puppeteer 有无头模式,我就是自己开发爬虫,然后打成 Docker 镜像扔服务器上跑的,遇到没法无头调试的 bug 才会在本地关闭无头模式看一看页面到底变成啥样了。
|
57
wocao666 261 天前
@justin2018 点进去一看,原来是 playwright 封装的
|