
新加坡联合早报 https://www.zaobao.com/
新闻详情页面采用了一种没见过的技术应对复制与爬虫
例如 https://www.zaobao.com/news/china/story20230110-1351792
在 P 标签内加入了 data-s="yGMGEZQ===="这种标签,导致页面看起来段落顺序是正确的,但复制,或者爬取,就是错的 请大神指点一下
1 viewrules 2023 年 1 月 10 日 html 里的结构和视觉效果的结构不一致,这种你要打断点研究排序的那个方法,反向还原 |
2 xiaopc 2023 年 1 月 10 日 |
3 Eiden 2023 年 1 月 10 日 |
4 wangxiaoaer 2023 年 1 月 10 日 这玩意儿是不是一个无头浏览器就解决了? |
5 sparklee 2023 年 1 月 10 日 @wangxiaoaer +1, 就是需要在获取到数据之后浏览器执行一遍 js 重新排序 |
6 yang3121099 2023 年 1 月 10 日 @Eiden 所以是数组定义了一层映射来打乱段落的顺序吗,确实直接复制段落就会隔三差五的,第一次见 hhh |
7 guaguaguaxia1 2023 年 1 月 10 日 @wangxiaoaer 爬虫一般都不用浏览器的,效率极低 |
8 gezimonkey OP @wangxiaoaer 我尝试过了,Firefox 无法获得 html 内容,chrome 获得的同样是乱序 |
9 lkwfive 2023 年 1 月 10 日 浏览器截图 + OCR |
10 BeforeTooLate 2023 年 1 月 10 日 那这样是否意味着搜索引擎也无法收录了? |
12 leaflxh 2023 年 1 月 10 日 (右键可以复制全文 |
13 bluedawn 2023 年 1 月 10 日 via iPhone 没研究过但是 不妨看看 rsshub 对联合早报的 rss 爬取策略? 如果只是想获取新闻内容 |
14 likeme 2023 年 1 月 10 日 @guaguaguaxia1 不用浏览器用什么?好奇... |
17 chenzhe PRO const axios = require("axios"); const cheerio = require("cheerio"); axios.get("https://www.zaobao.com/news/china/story20230110-1351792").then(res => { const $ = cheerio.load(res.data) const cOntext= [] $("#article-body").children().each((i, el) => { if (i > 0 && $(el).text() !== "") { context.push($(el).text()) } }) console.log(context.join("\n")) }) |
18 getcharch 2023 年 1 月 10 日 https://cmd.im/pmhr 关键代码 传入参数 data-s.substring(3) ``` d = function (e) { var t, n, o, i = e["length"], s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=", l = 0, u = 0, c = ""; e = e["toUpperCase"](); for (var d = 0; d < i; d += 1) (t = s["indexOf"](e["charAt"](d))) >= 0 && t < 32 && (n = n << 5 | t, u += 5, u >= 8 && (o = 255 & n >> (u - 8), c = (c + String["fromCharCode"](o)), u -= 8)); if ((u > 0) && (o = (n << (8 - u) & 255) >> (8 - u), (o !== 0))) { c = c + String.fromCharCode(o) } return c } ``` |
20 ripperts 2023 年 1 月 10 日 简单看了下就是 data-s 字符串截取 3 位,然后 base32 加码就行了。 比如,data-s="6qsGE3A====" 然后 base32 解码 GE3A==== 直接返回 16 随便找了个在线解码: https://www.usetoolbar.com/developer/base32.html 试试吧,没仔细确认 |
21 gezimonkey OP @getcharch 大佬你就是生产力!!! |
22 NoOneNoBody 2023 年 1 月 16 日 |