本人使用 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 PRO 卧槽,这个有点吊 |
![]() | 6 titanp 2016-05-03 20:43:31 +08:00 via Android 这种站可能怕爬虫直接原文转 |
![]() | 7 popok 2016-05-03 20:52:35 +08:00 via iPhone ![]() 正文都是直接在 ![]() 但是最终显示出来,应该是通过一个 js 解析的 ![]() 不是前段,只懂皮毛 |
![]() | 9 gimp 2016-05-03 21:10:58 +08:00 via Android 使用 selenium 简单粗暴 哈哈 |
10 qqmishi 2016-05-03 21:54:51 +08:00 ![]() #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 之后,后面就随便处理了 |