使用正则表达式无法获取某些内容

时间:2018-07-20 09:12:18

标签: python regex python-3.x web-scraping beautifulsoup

我已经在python中结合BeautifulSoup编写了一些代码,以在addresses标签中获得了一些br。如果要单独使用BeautifulSoup来解析所需的文本,我可以使用下面显示的.next_sibling来完成。我的意图是将brBeautifulSoup结合起来抓取re中的内容。

这是我到目前为止的尝试:

import re
from bs4 import BeautifulSoup

content = """
<div class="store"">
<b>address</b><br>BLOCK ANG MO KIO AVE<br>
<b>address_one</b><br>BLOCK 407 ANG MO KIO AVE 10 #01-741<br>
<b>address_two</b><br>NO. 53 ANG MO KIO AVE 3 AMK HUB#B1-82<br>
</div>
"""
# soup = BeautifulSoup(content,"lxml")
# for addr in soup.find_all("b"):
#     print(addr.next_sibling.next_sibling)

soup = BeautifulSoup(content,"lxml")
for addr in soup.find_all(text=re.compile(r"<br>(.*?)</br>")):
    print(addr)  #It prints nothing, no error either

仅供参考,如果不加注释,被注释掉的部分将正常工作。当我试图弄清re在这种情况下的用途时,如果有人为我提供帮助,我将非常高兴。

1 个答案:

答案 0 :(得分:1)

如果要使用正则表达式,可以尝试以下操作:

for addr in re.findall(r"<br>(.*?)<br>", content):
    print(addr)

输出为

BLOCK ANG MO KIO AVE
BLOCK 407 ANG MO KIO AVE 10 #01-741
NO. 53 ANG MO KIO AVE 3 AMK HUB#B1-82