本人使用 PHP 的: file_get_contents 和 curl 函数都未曾获取到。就认真研究了下 36 氪的正文加载过程。
看了一下,它应该是使用 js 加载的正文内容。
如果禁用 js 调试,正文就没有内容;否则,就可以正常显示。但是查看了下所有的 js 文件也没看出来头绪,如果使用“网页另存为”本地文件,再用浏览器打开也是没有正文。
是不是使用了什么加密技术来获取正文(为了防止爬虫)?各位探讨一下。
1
binux 2016-05-03 19:33:58 +08:00
.js-react-on-rails-component
|
2
Syc 2016-05-03 19:36:37 +08:00 via Android
采集技术不够深,还需多多磨练
|
3
function007 2016-05-03 19:39:28 +08:00
感觉就是丧心病狂的转义。。
|
4
EchoWhale 2016-05-03 20:39:20 +08:00
这么丧心病狂地提防爬虫, 36 氪完全不需要讨好搜索引擎吗
|
5
Tink 2016-05-03 20:41:40 +08:00
卧槽,这个有点吊
|
6
titanp 2016-05-03 20:43:31 +08:00 via Android
这种站可能怕爬虫直接原文转
|
7
popok 2016-05-03 20:52:35 +08:00 via iPhone 1
正文都是直接在
但是最终显示出来,应该是通过一个 js 解析的 不是前段,只懂皮毛 |
9
gimp 2016-05-03 21:10:58 +08:00 via Android
使用 selenium 简单粗暴 哈哈
|
10
qqmishi 2016-05-03 21:54:51 +08:00 1
#encoding=utf8
import requests import json import re url="http://36kr.com/p/5045314.html" r = requests.get(url).content json_data = json.loads(re.sub(""","\"",re.search("data-props=\"([^\"]+)\"",r).group(1))) print json_data['data']['post']['display_content'] 其实抓到 json_data 之后,后面就随便处理了 |