试图在这个html标签上使用正则表达式

时间:2016-09-17 19:03:23

标签: python regex web-scraping

我是python的新手,并且在使用正则表达式方面遇到了麻烦。我想使用正则表达式来获取pp.53-63,并且能够在整个网站中为多个与此类似的行进行操作。任何人都可以帮助我。

<div class="src">
        Foreign Affairs, Vol. 79, No. 4 (Jul. - Aug., 2000), pp. 53-63
    </div>
到目前为止,我把它写成:

    urlpage = page.read()
    outputh.write(urlpage)
    matches = re.findall(r'(<div class="src">+[\d+,\d]+\s+Search\s+Results)', urlpage)

但我知道这是错的..

1 个答案:

答案 0 :(得分:0)

你走了:

from bs4 import BeautifulSoup
import re

data = """<div class="src">
        Foreign Affairs, Vol. 79, No. 4 (Jul. - Aug., 2000), pp. 53-63
    </div>"""
soup = BeautifulSoup(data)
rx = re.compile(r'\bpp\. \d+-\d+')
pages = [rx.search(div.strip()).group(0)
        for div in soup.find_all(string = rx)]
# ['pp. 53-63']

这使用了一个解析器(BeautifulSoup)和一个正则表达式,区别在于你没有在DOM本身上运行你的正则表达式,而是让bs4为你做。