擅长:python、mysql、java
<p>可以匹配多个方面,包括对属性值使用正则表达式:</p>
<pre><code>import re
soup.find_all('a', href=re.compile('http://www\.iwashere\.com/'))
</code></pre>
<p>哪个匹配(例如):</p>
<pre><code>[<a href="http://www.iwashere.com/washere.html">next</a>, <a href="http://www.iwashere.com/wasnot.html">next</a>]
</code></pre>
<p>所以任何具有<code>href</code>属性的<code><a></code>标记,其值以字符串<code>http://www.iwashere.com/</code>开头。</p>
<p>您可以循环查看结果,并只选择<code>href</code>属性:</p>
<pre><code>>>> for elem in soup.find_all('a', href=re.compile('http://www\.iwashere\.com/')):
... print elem['href']
...
http://www.iwashere.com/washere.html
http://www.iwashere.com/wasnot.html
</code></pre>
<p>要匹配所有相对路径,请使用一个否定的前瞻性断言,测试该值是否以schem(例如<code>http:</code>或<code>mailto:</code>)或双斜杠(<code>//hostname/path</code>)开头,而不是以相对路径开头:</p>
<pre><code>soup.find_all('a', href=re.compile(r'^(?!(?:[a-zA-Z][a-zA-Z0-9+.-]*:|//))'))
</code></pre>