un3*_*33k 6 python regex tags string
考虑以下:
<div id=hotlinklist>
<a href="foo1.com">Foo1</a>
<div id=hotlink>
<a href="/">Home</a>
</div>
<div id=hotlink>
<a href="/extract">Extract</a>
</div>
<div id=hotlink>
<a href="/sitemap">Sitemap</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
您如何在python中使用regex取出sitemap行?
<a href="/sitemap">Sitemap</a>
Run Code Online (Sandbox Code Playgroud)
以下内容可用于拉出锚标签.
'/<a(.*?)a>/i'
Run Code Online (Sandbox Code Playgroud)
但是,有多个锚标签.还有多个热链接,所以我们也不能真正使用它们?
Unk*_*own 13
不要使用正则表达式.使用BeautfulSoup,一个HTML解析器.
from BeautifulSoup import BeautifulSoup
html = \
"""
<div id=hotlinklist>
<a href="foo1.com">Foo1</a>
<div id=hotlink>
<a href="/">Home</a>
</div>
<div id=hotlink>
<a href="/extract">Extract</a>
</div>
<div id=hotlink>
<a href="/sitemap">Sitemap</a>
</div>
</div>"""
soup = BeautifulSoup(html)
soup.findAll("div",id="hotlink")[2].a
# <a href="/sitemap">Sitemap</a>
Run Code Online (Sandbox Code Playgroud)
使用正则表达式解析HTML是个坏主意!
想想下面这段html
<a></a > <!-- legal html, but won't pass your regex -->
<a href="/sitemap">Sitemap<!-- proof that a>b iff ab>1 --></a>
Run Code Online (Sandbox Code Playgroud)
还有更多这样的例子.正则表达式适用于许多内容,但不适用于解析HTML.
你应该考虑使用Beautiful Soup python HTML解析器.
无论如何,使用正则表达式的临时解决方案是
import re
data = """
<div id=hotlinklist>
<a href="foo1.com">Foo1</a>
<div id=hotlink>
<a href="/">Home</a>
</div>
<div id=hotlink>
<a href="/extract">Extract</a>
</div>
<div id=hotlink>
<a href="/sitemap">Sitemap</a>
</div>
</div>
"""
e = re.compile('<a *[^>]*>.*</a *>')
print e.findall(data)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> e.findall(data)
['<a href="foo1.com">Foo1</a>', '<a href="/">Home</a>', '<a href="/extract">Extract</a>', '<a href="/sitemap">Sitemap</a>']
Run Code Online (Sandbox Code Playgroud)
为了提取标语的内容:
<a href="/sitemap">Sitemap</a>
Run Code Online (Sandbox Code Playgroud)
......我会用:
>>> import re
>>> s = '''
<div id=hotlinklist>
<a href="foo1.com">Foo1</a>
<div id=hotlink>
<a href="/">Home</a>
</div>
<div id=hotlink>
<a href="/extract">Extract</a>
</div>
<div id=hotlink>
<a href="/sitemap">Sitemap</a>
</div>
</div>'''
>>> m = re.compile(r'<a href="/sitemap">(.*?)</a>').search(s)
>>> m.group(1)
'Sitemap'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20418 次 |
| 最近记录: |