Python正则表达式网址抓取

时间:2013-08-19 20:57:32

标签: python html regex html-parsing wildcard

我无法弄清楚如何使用正则表达式选择部分html链接

说链接是:

<a href="race?raceid=1234">Mushroom Cup</a>

我已经想出如何获得比赛ID,但我不能为我的生活弄清楚如何使用正则表达式来找到'蘑菇杯'。我能做的最好的就是获得1234&gt;蘑菇杯。

我是正则表达式的新手,对我来说理解太多了。

2 个答案:

答案 0 :(得分:1)

非常像

re.findall('<a href="race\?raceid=(\d+)">([^<]+)</a>',html_text)

答案 1 :(得分:1)

不要使用正则表达式来解析HTML。而是使用像lxmlBeautifulSoup这样的HTML解析器。

以下是使用BeautifulSoup的示例:

import urlparse
from bs4 import BeautifulSoup

soup = BeautifulSoup("""
<html>
<head>
    <title>Python regex url grab - Stack Overflow</title>
</head>
<body>
    <a href="race?raceid=1234">Mushroom Cup</a>
</body>
</html
""")

link = soup.find('a')
par = urlparse.parse_qs(urlparse.urlparse(link.attrs['href']).query)
print par['raceid'][0]   # prints 1234
print link.text   # prints Mushroom Cup

注意,urlparse用于获取链接参数的值。点击此处了解详情:Retrieving parameters from a URL

另见:

希望有所帮助。