选择适当的标签以传递到BeautifulSoup的select方法中

时间:2019-02-15 17:45:31

标签: python css beautifulsoup css-selectors

因此,我一直在阅读在线书籍“使用Python自动化无聊的东西”,而且我正在学习BeautifulSoup。我的问题是,我似乎无法弄清楚如何根据在Chrome中使用开发人员的工具找到的内容来选择合适的标签。

<div data-hveid=.....>
  <div class="rc">
   <a href="https://www.python.org/".....>
        <h3 class="LC20lb">Welcome to Python.org</h3>
# Using select to grab links to search results. 
linkElems = soup.select('r .a')

An example of the inspector results. 在本书中,目标是获取显示在Google搜索的搜索结果页上的所有链接。为此,作者使用了soup.select('r .a')行。但是,当我使用检查器时,会出现“ a href”标签。

我个人也想抓住显示在搜索结果页面上的链接的标题/标题。检查器突出显示“ h3 class”标签。我试图通过告诉select查找class属性等于“ LC20lb”的标签来进行选择,但是我一直得到一个空列表作为输出。

所以我的问题是,一旦检查员帮助我们缩小了关注范围,我们如何知道哪个标签是合适的选择?就像作者是怎么知道的,我们应该使用'.r a'代替“ a href”标记吗?通常,一旦选择器向我显示了某个特定元素,我应该选择多远的距离,即哪个祖先?

1 个答案:

答案 0 :(得分:0)

如果您执行“ a href”,则未指定div类,因此它将获取href的所有实例,其中将包括指向地图和驱动器等内容的链接。在您引用的代码中,您错过了“ r” div课

    <div data-hveid=.....>
      <div class="rc">
        <div class="r">        
          <a href="https://www.python.org/".....>
            <h3 class="LC20lb">Welcome to Python.org</h3>

soup.select('。r a')正在获取“ r” div类(即搜索结果)中的所有a标签,而不是href标签的所有实例。

希望这能回答您的问题!