Python 靓汤双选?

Python 靓汤双选?,python,beautifulsoup,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

以下是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 > span > a')
或者,如果可以稍微不太具体地使用选择器:

h3 = soup.select('div.vl-article-title a')
将div中的所有a元素与类vl文章标题匹配

编辑:

对不起,我已经有一段时间没有使用BeautifulSoup了,我错误地认为它可以与CSS选择器一起使用,但事实并非如此

一种方法是:

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

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

soup = BeautifulSoup(html)
link = soup.find("a").attrs["href"] # this gives you the link as a string
如果页面中有多个
标记,可以将
find(“a”)
替换为
find\u all(“a”)
,这将返回一个迭代器

编辑每个请求,
标记位于
标记中:


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

问题在于它不是整个html。在源代码中有很多链接,但我需要这一个具体的。这是h3.return self.attrs[key]KeyError:0Oh,现在它也适用于我。但是,它只找到第一个项目(只有20多个相同结构的链接)。好的,那么你就必须使用findAll来代替并迭代结果:-)我没有那么笨:D我已经试过了,我得到的结果是:“ResultSet”对象没有属性“find”,你不能在ResultSet对象上使用
。find
。如果
res\u set
是您的
ResultSet
对象,那么您需要为res\u set中的项执行:
:item.find(“a”).attrs[“href”]
soup = BeautifulSoup(html)
link = soup.find("a").attrs["href"] # this gives you the link as a string