Python 正在尝试在此html标记上使用正则表达式

Python 正在尝试在此html标记上使用正则表达式,python,regex,web-scraping,Python,Regex,Web Scraping,我是python新手,在正则表达式方面遇到了麻烦。我想使用正则表达式只抓取第53-63页,并且能够在整个网站中为多行类似的内容这样做。有人能帮我吗 <div class="src"> Foreign Affairs, Vol. 79, No. 4 (Jul. - Aug., 2000), pp. 53-63 </div> 《外交》,第79卷,第4期(2000年7月至8月),第53-63页 到目前为止,我写的是: urlpage = p

我是python新手,在正则表达式方面遇到了麻烦。我想使用正则表达式只抓取第53-63页,并且能够在整个网站中为多行类似的内容这样做。有人能帮我吗

<div class="src">
        Foreign Affairs, Vol. 79, No. 4 (Jul. - Aug., 2000), pp. 53-63
    </div>

《外交》,第79卷,第4期(2000年7月至8月),第53-63页
到目前为止,我写的是:

    urlpage = page.read()
    outputh.write(urlpage)
    matches = re.findall(r'(<div class="src">+[\d+,\d]+\s+Search\s+Results)', urlpage)
urlpage=page.read()
outputh.write(urlpage)
matches=re.findall(r'(+[\d+,\d]+\s+Search\s+Results),urlpage)
但我知道这是错误的。

给你:

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']
从bs4导入美化组
进口稀土
data=”“”
《外交》,第79卷,第4期(2000年7月至8月),第53-63页
"""
汤=美汤(数据)
rx=re.compile(r'\bpp\.\d+-\d+'))
pages=[rx.search(div.strip()).group(0)
对于汤中的div.find_all(string=rx)]
#['第53-63页']

这使用了一个解析器(
BeautifulSoup
)和一个正则表达式,不同之处在于您不需要在DOM本身上操作正则表达式,而是让
bs4
为您操作。

我们真的需要再次指向正则表达式吗?@DanielRoseman:我想是这样的:(我已经有一些样板评论了。你为什么又问同一个问题?在你的最后一个问题中,你已经被准确地演示了如何可靠地做到这一点。@PadraicCunningham,我只是试图从多个解决方案来看待这个问题。对不起,我认为这是一种足够不同的解决方法。@Kainesprain,regex是一种非常糟糕的PAR方法根据Daniel评论中链接到的答案中列出的所有原因,使用e html。此外,您的正则表达式包含html标记文本中不存在的单词,因此它可能无法工作。如果您想可靠地解析html,请按照上一个问题使用bs4。如果速度不够快,请查看lxml。