You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网页爬取时如何将多行字符串输出合并为单行?

解决网页爬取中多行文本合并为单行输出的问题

问题分析

你当前的代码循环遍历low_price.strings时,每次调用print(string)都会默认添加换行符,导致文本被拆分成多行输出。另外代码存在一个潜在问题:low_price = soup.find(...)应该改为item.find(...),否则每次循环都会取整个页面中第一个符合条件的元素,而非当前item下的目标元素。

解决方案

方案一:收集文本片段后合并打印(推荐)

将所有有效文本片段收集并拼接成完整字符串,再统一打印,既避免多余换行,也能保证文本格式自然:

items = soup.find_all('div', class_='item-cell')
for item in items:
    low_price = item.find('div', class_='item-msg is-best-price')
    # 过滤空文本片段,用空格连接有效内容
    full_text = ' '.join([s.strip() for s in low_price.strings if s.strip()])
    print(full_text)

执行后输出为:Lowest price in 30 days

方案二:修改print的end参数实现不换行输出

如果想逐段输出但不自动换行,可以调整print的end参数,最后手动换行:

items = soup.find_all('div', class_='item-cell')
for item in items:
    low_price = item.find('div', class_='item-msg is-best-price')
    for string in low_price.strings:
        cleaned_str = string.strip()
        if cleaned_str:  # 跳过空的文本片段
            print(cleaned_str, end=' ')
    print()  # 每个item处理完后换行

该方案同样会输出单行的Lowest price in 30 days

关键说明

  • low_price.strings会返回目标元素下的所有文本节点,包括被换行、缩进等空白字符分隔的片段;
  • strip()用于去除每个文本片段前后的空白字符(换行、空格、制表符等);
  • 用join()方法拼接有效文本片段,能快速实现单行输出;
  • 替换soup.find为item.find,确保每次处理的是当前item容器内的元素,避免重复获取页面第一个匹配元素。

内容的提问来源于stack exchange,提问作者Yassin mohammed Hadjadj Aoul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:52:46