如何使用正则表达式将字符串与特殊字符匹配

时间:2018-01-24 18:03:20

标签: python regex python-3.x

我正在尝试使用BS4抓取网站数据,但无法编写确切的语句来获取所需的链接。我想获取搜索资源的链接,该资源应该在

<a href="www.speed.org">Speed Org</a>

我写的代码是:

r = re.compile(r'^<a(.)*speed.org(.)*</a>$')

我希望代码显示:

<a href="www.speed.org">Speed Org</a>

但它没有提供适当的输出。任何人都可以修改此代码。

修改

有人指出表达本身是错误的。正确的表达应该是:r'^<a(.*)speed.org(.*)</a>$' 由于我使用的是BS4,因此使用汤更容易获得结果。

感谢所有人的帮助。 :)

1 个答案:

答案 0 :(得分:2)

如果您已经在使用BeautifulSoup,请不要将HTML视为字符串。让BeautifulSoup解析它,然后使用BeautifulSoup.find_all搜索您的元素:

import re
from bs4 import BeautifulSoup

soup = BeautifulSoup(your_html, 'lxml')
links = soup.find_all('a', href=re.compile('www\.speed\.org'))

href=re.compile('www\.speed\.org')只使用正则表达式缩小指向href属性与正则表达式匹配的链接的链接。