美丽的汤双选?

时间:2014-06-05 09:08:17

标签: python beautifulsoup

这是HTML:

<div class="vl-article-title">

    <h3>
        <span style="font-size: 24px;">
            <a href="http://www.15min.lt/naujiena/sportas/fifa-2014/desimt-pasaul…onato-debiutantu-kurie-atkreips-jusu-demesi-813-430673?cf=vl"></a>
        </span>
    </h3>
</div>

我只需要获得链接(a)但我不知道如何。有可能做这样的事情:

h3 = soup.select('div.vl-article-title > h3 > a')

2 个答案:

答案 0 :(得分:1)

&gt; sign是直接后代选择器。它与A元素不匹配,因为它们之间存在跨度。

你应该可以这样做:

h3 = soup.select('div.vl-article-title > h3 > span > a')

或者,如果使用选择器稍微不那么具体可以:

h3 = soup.select('div.vl-article-title a')

匹配所有与div vl-article-title相同的div的元素。

修改

很抱歉,因为我使用了美味的汤,我错误地认为它适用于CSS选择器,但事实并非如此。

一种方法是:

a = soup.find("div", attrs={"class": "vl-article-title"}).find("h3").find("span").find("a")

答案 1 :(得分:0)

如果这是整个HTML,那么您只需执行以下操作:

soup = BeautifulSoup(html)
link = soup.find("a").attrs["href"] # this gives you the link as a string

如果页面中有多个<a>标记,则可以将find("a")替换为find_all("a"),它将返回迭代器。

每次请求

编辑<a>标记位于<h3>标记内:

link = soup.find("h3").find("a").attrs["href"]