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

Python爬取BBC新闻时转义字符异常与列表文本拼接问题

问题根源

你看到的反斜杠、额外引号、逗号根本不是爬取的正文自带的内容:

  • Python直接打印整个列表对象时,会自动给列表内的每个字符串元素包裹引号,对字符串内部原有的引号加反斜杠转义,元素之间用逗号分隔,这只是列表类型的默认展示逻辑,不是你存储的文本真的混入了这些多余字符。
  • 你之前单独打印每个div.text格式正常,已经能证明爬取到的单段内容本身是干净的,完全不需要做额外的特殊字符替换。
修复方案

直接把列表里存的所有段落用分隔符拼成一整个字符串即可,调整逻辑如下:

  • 遍历段落时用strip()去掉每段首尾的多余空白,顺手过滤掉空内容
  • 收集完所有段落后,用字符串的join()方法把列表拼成完整文本,段落之间用两个换行分隔,和原文的段落排版保持一致

修改后的完整代码:

import requests 
from bs4 import BeautifulSoup

def scraper():
  link = 'https://www.bbc.co.uk/news/uk-52255054'
  page = requests.get(link)
  soup = BeautifulSoup(page.content, 'html.parser')
  results = soup.find(class_='ssrcss-pv1rh6-ArticleWrapper')
  body = results.find_all(attrs={'class': 'ssrcss-1q0x1qg-Paragraph'})

  paragraph_list = []
  for div in body:
      para_text = div.text.strip()
      if para_text: # 过滤无意义空段落
          paragraph_list.append(para_text)
    
  # 拼接为完整连续正文
  content = '\n\n'.join(paragraph_list)
  return content
效果验证

直接打印函数返回的content变量,就能得到排版正常、没有多余符号的完整正文,不会再出现转义反斜杠、列表自带的引号和逗号。
补充提示:只要不直接打印存储段落的整个列表对象,不管是取单个段落元素打印,还是拼接成完整字符串后打印,都不会出现那些异常的多余字符。


内容的提问来源于stack exchange,提问作者BigCabbage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:18:20