Beautiful Soup .find 中文字符

0 投票
2 回答
678 浏览
提问于 2025-04-18 09:07
a_string = soup.find(text='围')

soup.find_all('title', limit=1)
# [<title>The Dormouse's story</title>]

soup.find('title')
# <title>The Dormouse's story</title>

有没有办法在使用BeautifulSoup时处理带有中文字符的查找?

我试了很久,似乎无法识别中文字符。英文字符没问题。

我正在使用的网站的来源

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
        <meta charset="gbk" />

2 个回答

1

试试下面的代码:

a_string = soup.find(text=re.compile(u'围', re.U))

换句话说,你要搜索的字符串应该是unicode格式的。虽然不使用 re.compile() 也可能能工作,但至少要确保你的中文字符串是用 u'' 包起来的。

1

当你使用 find(text='something') 时,它会精确地查找包含文本 'something' 的文本节点,其他的内容都不会被找到。

如果你想找包含特定字母的文本,或者匹配其他的规则表达式,你就需要用规则表达式的模式来查找(就像 @Yannis 说的那样):

soup.find(text=re.compile(u'定'))

注意,re.U 这个标志并不是必须的,因为你并没有改变像 \s 或 \w 这样的特殊字符的行为。如果你确实需要改变这些特殊字符的行为,那你可能就需要使用这个标志。想了解更多关于规则表达式的内容,可以在 这里 查看。

撰写回答