请教大佬个问题,爬虫爬取新闻,如何记录新闻内容和图片的相对位置

2019-08-14 23:10:11 +08:00
 zhanbiqiyu

比如一个新闻网站个结构如下:

<title>title</title>

some text

像这种图片和文本交叉的 html,如何记录图片和新闻内容的相对位置呢,我希望得到这样的结果

text1

img_url

text2

img_url

img_url

有没有比较好的方法

2735 次点击
所在节点    Python
11 条回复
AX5N
2019-08-15 00:12:05 +08:00
都快 2020 年了,还有韩粉
favourstreet
2019-08-15 00:12:27 +08:00
楼主前端知识过关却还来问这种问题的话应该是想取巧,但是我也不知道这种事怎么取巧,所以当一回老实人告诉楼主:文档对象模型,楼主需要解析 DO ……不对,更适合楼主的答案应该是,用数组!对,字符串数组,你看你给出的希望的结果不是字符串数组吗……
AX5N
2019-08-15 00:15:24 +08:00
相对位置是渲染出来的相对位置,还是代码的相对位置?
记录你是想怎么记录,你是想知道正文<p>有哪些兄弟节点?
axlecho
2019-08-15 02:45:55 +08:00
不太明白你的目的
解析成这样,还不如直接保存整个 doc.
ant2017
2019-08-15 07:04:22 +08:00
列表?
annielong
2019-08-15 09:12:09 +08:00
提取内容,输出时候换行,还第一次见要相对位置的
ZeldaPeach
2019-08-15 09:19:04 +08:00
用 CSS Selector 同时选取图片和文本 img+p
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 步之前执行。
keepeye
2019-08-15 09:29:42 +08:00
先用正则提取出所有 img 标签到一个数组
再用正则按 img 标签 split 文字内容到一个数组
然后遍历两个数组,添加到一个新的数组中
enrolls
2019-08-21 11:16:25 +08:00
1. 去掉无用标签
2. 定位正文的 dom
3. 对 dom 进行按 HTML tags 输出
ChineseOldSober
2019-09-02 15:54:19 +08:00
这个我做过。
1. 网页直接 dom_str = response.text 处理成一个大字符串;
2. 将你的段们和图片对应的文字拿出来作为索引的自变量;
3. 使用字符串的 index()来索引字符串在整个大字符串中的位置,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/591963

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX