V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhanbiqiyu
V2EX  ›  Python

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

  •  
  •   zhanbiqiyu · 2019-08-14 23:10:11 +08:00 · 2895 次点击
    这是一个创建于 1920 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    <title>title</title>

    some text

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

    text1

    img_url

    text2

    img_url

    img_url

    有没有比较好的方法

    11 条回复    2019-09-02 15:54:19 +08:00
    AX5N
        1
    AX5N  
       2019-08-15 00:12:05 +08:00
    都快 2020 年了,还有韩粉
    favourstreet
        2
    favourstreet  
       2019-08-15 00:12:27 +08:00 via Android
    楼主前端知识过关却还来问这种问题的话应该是想取巧,但是我也不知道这种事怎么取巧,所以当一回老实人告诉楼主:文档对象模型,楼主需要解析 DO ……不对,更适合楼主的答案应该是,用数组!对,字符串数组,你看你给出的希望的结果不是字符串数组吗……
    AX5N
        3
    AX5N  
       2019-08-15 00:15:24 +08:00
    相对位置是渲染出来的相对位置,还是代码的相对位置?
    记录你是想怎么记录,你是想知道正文<p>有哪些兄弟节点?
    axlecho
        4
    axlecho  
       2019-08-15 02:45:55 +08:00 via Android
    不太明白你的目的
    解析成这样,还不如直接保存整个 doc.
    ant2017
        5
    ant2017  
       2019-08-15 07:04:22 +08:00 via Android
    列表?
    annielong
        6
    annielong  
       2019-08-15 09:12:09 +08:00
    提取内容,输出时候换行,还第一次见要相对位置的
    ZeldaPeach
        7
    ZeldaPeach  
       2019-08-15 09:19:04 +08:00
    用 CSS Selector 同时选取图片和文本 img+p
    littlecowherd
        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 步之前执行。
    keepeye
        9
    keepeye  
       2019-08-15 09:29:42 +08:00
    先用正则提取出所有 img 标签到一个数组
    再用正则按 img 标签 split 文字内容到一个数组
    然后遍历两个数组,添加到一个新的数组中
    enrolls
        10
    enrolls  
       2019-08-21 11:16:25 +08:00
    1. 去掉无用标签
    2. 定位正文的 dom
    3. 对 dom 进行按 HTML tags 输出
    ChineseOldSober
        11
    ChineseOldSober  
       2019-09-02 15:54:19 +08:00
    这个我做过。
    1. 网页直接 dom_str = response.text 处理成一个大字符串;
    2. 将你的段们和图片对应的文字拿出来作为索引的自变量;
    3. 使用字符串的 index()来索引字符串在整个大字符串中的位置,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 20:33 · PVG 04:33 · LAX 12:33 · JFK 15:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.