最近在写爬虫,那些简单的还好,稍等有点安全意识的网站,都是 https + 一大堆 js 加密算法。而且每个网站都不相同。这太耗时间与精力了。
所以我在想有没有 python 框架,可以实现内嵌一个浏览器,这个浏览器要支持方法调用,比如传个地址,修改某些表单 dom 的数据。而且还能拿到页面的内容。我查了一下 Python 内嵌浏览器还是有的,但是可能不支持调用。获得数据可以通过 python 实现一个代理服务器来拿。
请问各位大神有没有相应的框架或者思路?
我发现谷歌有几款插件支持类似的功能,但是我还想 python 原生实现 插件
1
tscat 2017-09-25 14:25:57 +08:00 1
你是在说 selenium ?
|
2
Coder0 2017-09-25 14:29:03 +08:00 1
selenium
|
3
timwei 2017-09-25 14:37:00 +08:00 1
|
4
90safe 2017-09-25 14:37:50 +08:00 1
前些天写微博爬虫的时候,思考过这个问题,感觉可以写个 chrome or firefox 插件来爬,可将结果存到本地或者 post 传到指定服务器上。
|
5
smgui 2017-09-25 14:47:59 +08:00 2
headless 咯
|
6
nilai 2017-09-25 14:52:09 +08:00 2
google headless
|
11
VShawn 2017-09-25 15:09:11 +08:00
两年前我写的一个小说爬虫就是内嵌了一个浏览器,结果没有搞定动态操作浏览器的 DOM
|
12
timwei 2017-09-25 15:15:07 +08:00 2
我工具党
我只是需要解析 DOM 的话,通常直接用 Xpath 需要 cookie 支持的话(用户验证、部分 asp.net 应用),会改用 Mechanize 如需执行 JS 才会用到 Selenium w/ Chrome,Firefox,PhantomJS |
13
Outshine 2017-09-25 16:15:57 +08:00 2
谷歌浏览器团队出了一个`puppeteer`,不过是 nodejs 的,楼主可以试试(其实也是用 headless browser )
|
15
syhsyh9696 2017-09-25 16:21:36 +08:00
Selenium 真的好慢好慢啊,这样搞效率太低
|
16
gamecreating 2017-09-25 16:31:20 +08:00
phantomjs
|
17
yankebupt 2017-09-25 16:35:59 +08:00 1
参考目前闲鱼的防抓取:
--- * 不登录只循环显示少量资料 * 电脑端不登录,通过首页链接点击进入物品详情时限制物品类别数目,超出物品类别强制登陆否则不予显示 * 根据个人搜索记录强推个性化内容,每个人个性化内容不同无法查看全部资料,除非使用大量关键字搜索 * 对于大量关键字盲目搜索超标的,判定为抓取者,返回第一条,默认循环显示不登陆时显示的少量资料 --- 感觉很独裁,但是没辙,除了芝麻信用基本没什么能用可信任的第三方征信平台。 --- 我不知道要有什么样的技术突破才能避免以后做大了的服务都逐渐参考这种模式。简直反乌托邦 |
18
K1W1 OP @gamecreating #16 嗯,我现在在尝试 selenium + phantomjs 去实现
|
20
K1W1 OP @yankebupt #17 这种不登录只能看部分内容,登录了只能看账号绑定的推荐个性化的的内容是有点头大。目前来看也只能注册 n 个账号,每个账号偏向不同的类型搜索了。
|
21
yankebupt 2017-09-25 19:48:47 +08:00 1
|
23
mooncakejs 2017-09-25 20:25:35 +08:00
此种高级的爬虫还是用 js 写吧。 headless 浏览器或者 chrome 插件。
|
25
kltt22 2017-09-26 08:51:40 +08:00
PhantomJS 效率太差了,要是数据量少的话还行,上百万就很要命了。
|
27
shawndev 2017-09-28 01:15:21 +08:00
selenium + chrome headless mode
|