我有一个正则表达式,我想将正则表达式的输出添加到我的网址,例如
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/
答案 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')