BeautifulSoup:使用嵌入式标签查找标签文本

时间:2015-10-13 06:07:42

标签: python regex beautifulsoup

我正在尝试使用附带的文本在网页中找到>>> from bs4 import BeautifulSoup as BS soup = BS('<a>lalala <del>10</del> lalala </a>') soup1 = BS('<a>lalala 10 lalala </a>' >>> soup.find_all('a', text=re.compile('lalala')) [] >>> soup1.find_all('a', text=re.compile('lalala')) [<a>lalala 10 lalala </a>] 标记,使用Python中的BeautifulSoup 4。我使用了一个真实的表达式,如下例所示:

<del></del>

为什么嵌入式<a>标记阻止我查找其文本包含它的#!/bin/sh while true; do if($update) then who | awk {'print$1'} > first_user_list #store original user list update=false fi who | awk {'print$1'} > updated_user_list (diff first_user_list updated_user_list) | cut -c 3- > in_out_list inOutVar=`cat in_out_list` ## use `` or $(), not '' length_first=$(wc -l < updated_user_list) length_update=$(wc -l < first_user_list) if [[ "$length_first" -lt "$length_update" ]]; then echo -e "$inOutVar" " has logged out" update=true elif [ "$length_first" -gt "$length_update" ]; then echo -e "$inOutVar" " has logged in" update=true else echo No user has logged in/out in the last 3 seconds fi sleep 3 标记?我该如何解决?

1 个答案:

答案 0 :(得分:1)

这与你的正则表达式无关,但是在{Beautiful Soup 4.4.0中} .stringtext参数被称为string)的方式工作,它返回如果标签包含多个内容,则为无。 您可以使用a function执行此操作:

def in_text(tag):
    return tag.name == 'a' and 'lalala' in tag.text

soup.find_all(in_text)

哪个收益率:

[<a>lalala <del>10</del> lalala </a>]