本人使用 PHP 的: file_get_contents 和 curl 函数都未曾获取到。就认真研究了下 36 氪的正文加载过程。
看了一下,它应该是使用 js 加载的正文内容。
如果禁用 js 调试,正文就没有内容;否则,就可以正常显示。但是查看了下所有的 js 文件也没看出来头绪,如果使用“网页另存为”本地文件,再用浏览器打开也是没有正文。
是不是使用了什么加密技术来获取正文(为了防止爬虫)?各位探讨一下。
本人使用 PHP 的: file_get_contents 和 curl 函数都未曾获取到。就认真研究了下 36 氪的正文加载过程。
看了一下,它应该是使用 js 加载的正文内容。
如果禁用 js 调试,正文就没有内容;否则,就可以正常显示。但是查看了下所有的 js 文件也没看出来头绪,如果使用“网页另存为”本地文件,再用浏览器打开也是没有正文。
是不是使用了什么加密技术来获取正文(为了防止爬虫)?各位探讨一下。
|
binuxMay 3, 2016
1
.js-react-on-rails-component
|
|
SycMay 3, 2016 via Android
2
采集技术不够深,还需多多磨练
|
|
function007May 3, 2016
3
感觉就是丧心病狂的转义。。
|
|
EchoWhaleMay 3, 2016
4
这么丧心病狂地提防爬虫, 36 氪完全不需要讨好搜索引擎吗
|
|
TinkMay 3, 2016
5
卧槽,这个有点吊
|
|
titanpMay 3, 2016 via Android
6
这种站可能怕爬虫直接原文转
|
|
7
正文都是直接在
但是最终显示出来,应该是通过一个 js 解析的 不是前段,只懂皮毛 |
|
gimpMay 3, 2016 via Android
9
使用 selenium 简单粗暴 哈哈
|
|
10
#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 之后,后面就随便处理了 |