比如一个新闻网站个结构如下:
some text
像这种图片和文本交叉的 html,如何记录图片和新闻内容的相对位置呢,我希望得到这样的结果
有没有比较好的方法
1
AX5N 2019-08-15 00:12:05 +08:00
都快 2020 年了,还有韩粉
|
2
favourstreet 2019-08-15 00:12:27 +08:00 via Android
楼主前端知识过关却还来问这种问题的话应该是想取巧,但是我也不知道这种事怎么取巧,所以当一回老实人告诉楼主:文档对象模型,楼主需要解析 DO ……不对,更适合楼主的答案应该是,用数组!对,字符串数组,你看你给出的希望的结果不是字符串数组吗……
|
3
AX5N 2019-08-15 00:15:24 +08:00
相对位置是渲染出来的相对位置,还是代码的相对位置?
记录你是想怎么记录,你是想知道正文<p>有哪些兄弟节点? |
4
axlecho 2019-08-15 02:45:55 +08:00 via Android
不太明白你的目的
解析成这样,还不如直接保存整个 doc. |
5
ant2017 2019-08-15 07:04:22 +08:00 via Android
列表?
|
6
annielong 2019-08-15 09:12:09 +08:00
提取内容,输出时候换行,还第一次见要相对位置的
|
7
ZeldaPeach 2019-08-15 09:19:04 +08:00
用 CSS Selector 同时选取图片和文本 img+p
|
8
littlecowherd 2019-08-15 09:27:10 +08:00
**用正则,去掉 HTML 标签,保留标签内文本。**
想保留图片的话,可以先用正则把 img 标签处理下: 1. 将<img src="">替换成{img src=""} 2. 删除 script 和 style 及 comment 等无用标签。 3. 将标签符号替换为空:re.sub(r'<[\s\S]*?>', "", body) 这样大概能完成你得需求。如果还想保留换行的话,可以将</p>、<br>等标签替换为换行符,需要在第 3 步之前执行。 |
9
keepeye 2019-08-15 09:29:42 +08:00
先用正则提取出所有 img 标签到一个数组
再用正则按 img 标签 split 文字内容到一个数组 然后遍历两个数组,添加到一个新的数组中 |
10
enrolls 2019-08-21 11:16:25 +08:00
1. 去掉无用标签
2. 定位正文的 dom 3. 对 dom 进行按 HTML tags 输出 |
11
ChineseOldSober 2019-09-02 15:54:19 +08:00
这个我做过。
1. 网页直接 dom_str = response.text 处理成一个大字符串; 2. 将你的段们和图片对应的文字拿出来作为索引的自变量; 3. 使用字符串的 index()来索引字符串在整个大字符串中的位置, |