python - 选择合适的标签传递给 BeautifulSoup 的 select 方法

标签 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. 在这本书中,目标是获取显示在谷歌搜索结果页面上的所有链接。为此,作者使用了 soup.select('r .a') 行。但是当我使用检查器时,我得到了“a href”标签。

我自己也想获取显示在搜索结果页面上的链接的标题/标题。检查员突出显示“h3 类”标签。我试图通过告诉 select 查找类属性等于“LC20lb”的标签来选择它,但我一直得到一个空列表作为输出。

所以我的问题是,一旦检查员帮助我们缩小了关注范围,我们如何知道选择哪个标签是合适的?就像作者怎么知道我们应该使用 '.r a' 而不是“a href”标签?一般来说,一旦选择器向我展示了一个特定元素,我应该选择“超出”多远,即哪个祖先?

最佳答案

如果您执行“a href”,则您没有指定 div 类,因此它将获取 href 的所有实例,这将包括指向 map 和驱动器等内容的链接。在您引用的代码中,你错过了 "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 标签的所有实例。

希望这能回答您的问题!

关于python - 选择合适的标签传递给 BeautifulSoup 的 select 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714541/

相关文章:

python - 无法使用BeautifulSoup获取div文本

jquery - 100% 高度,无滚动条

javascript - Node.js app.js 不显示 HTML 页面而是显示 HTML 代码

Python:(Beautifulsoup)如何将从 html 新闻文章中提取的文本限制为仅新闻文章。

python - 从 Javascript 到 Python - 了解类、方法和属性的工作原理

python - 如何在python中实现自己的自定义字典类

python - 我在使用请求命中 Kinetica 数据库实例以确认其正常工作来设计 REST api 调用时遇到问题

javascript - 如何找到在 CORS 情况下未加载的字体 (MoovWeb)?

python - 使用 beautifulsoup 提取 url 和标题

python - 循环浏览网页