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

使用BeautifulSoup提取含特定波斯语的广告代码问题求助

代码问题排查与修正

核心错误点

  • 直接对Tag对象调用字符串方法
    content是BeautifulSoup返回的Tag实例,不是字符串,不能直接使用split()。必须先通过content.get_text()或content.text提取标签内的纯文本内容。

  • 逻辑错误的条件判断
    就算能成功得到分词列表,words == "توافقی"这种列表与字符串的比较逻辑也永远不成立。正确逻辑是检查目标词汇是否存在于文本或分词列表中。

修正后的代码

import requests
from bs4 import BeautifulSoup

r = requests.get("https://divar.ir/s/tehran")
r.encoding = "utf-8"  # 显式指定UTF-8编码,避免波斯语乱码
soup = BeautifulSoup(r.text, "html.parser")
results = soup.find_all("div", attrs={"class": "kt-post-card__body"})

for content in results:
    post_text = content.get_text(strip=True)
    # 直接检查文本是否包含目标词汇,无需分词
    if "توافق" in post_text or "توافقی" in post_text:
        print(post_text)
        # 若需要打印完整广告的HTML结构,替换为print(content)

额外说明

如果后续发现爬取的内容不全,大概率是因为divar.ir使用了JavaScript动态渲染内容,此时需要改用selenium或requests-html等工具处理动态页面。但当前代码足以解决静态内容的提取问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:57:12