选择合适的标签传递给 BeautifulSoup 的 select 方法
Posted
技术标签:
【中文标题】选择合适的标签传递给 BeautifulSoup 的 select 方法【英文标题】:Choosing the appropriate tag to pass into the select method of BeautifulSoup 【发布时间】:2019-07-09 21:42:47 【问题描述】:所以我一直在阅读在线书籍“使用 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”标签?一般来说,一旦选择器向我展示了特定元素,我应该选择多远,即哪个祖先?
【问题讨论】:
你的问题是什么? 对不起,由于某种原因,我写的部分内容没有发布。我已将其添加为编辑。 【参考方案1】:如果您执行“a href”,则您尚未指定 div 类,因此它将获取 a 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>
sosoup.select('.r a') 正在获取 "r" div 类(即搜索结果)中的所有 a 标签,而不是 a href 标签的所有实例。
希望这能回答你的问题!
【讨论】:
确实有帮助,谢谢!所以总的来说,我应该抓住检查员显示给我的任何标签的父级? 我认为考虑它的最佳方式是 标签是超链接,而 类是网站的部分,所以如果你想要网页中的所有超链接,你会使用 标签,但如果您希望网站的某个部分(在本例中为搜索结果)中的所有 标签,则需要使用它们所在的 div 类。 非常感谢,你在这里的帮助终于让我的脑海里有了点东西,现在一切都变得更有意义了。再次感谢!以上是关于选择合适的标签传递给 BeautifulSoup 的 select 方法的主要内容,如果未能解决你的问题,请参考以下文章