python url正则表达式

时间:2010-08-06 12:42:52

标签: python regex urllib2

我有一个正则表达式,我想将正则表达式的输出添加到我的网址,例如

url = 'blabla.com'
r = re.findall(r'<p>(.*?</a>))

r output - /any_string/on/any/server/

但是不知道如何使用regexp输出生成get-request

blabla.com/any_string/on/any/server/

2 个答案:

答案 0 :(得分:2)

不要使用正则表达式来解析html。使用真正的解析器。

我建议使用lxml.html解析器。 lxml supports xpath,这是查询结构化文档的一种非常强大的方式。有一个随时可用的make_links_absolute()方法可以满足您的要求。它也很快。

作为一个例子,在这个问题的页面HTML源代码(你现在正在阅读的那个)中有这一部分:

<li><a id="nav-tags" href="/tags">Tags</a></li>

xpath表达式//a[@id='nav-tags']/@href表示:“获取所有href代码的<a>属性,id属性等于nav-tags”< / em>的。让我们用它:

from lxml import html

url = 'http://stackoverflow.com/questions/3423822/python-url-regexp'

doc = html.parse(url).getroot()
doc.make_links_absolute()
links = doc.xpath("//a[@id='nav-tags']/@href")
print links

结果:

['http://stackoverflow.com/tags']

答案 1 :(得分:0)

得到美丽的汤:

http://www.crummy.com/software/BeautifulSoup/documentation.html#Parsing+a+Document

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
soup.findAll('p')