python - 选择合适的标签传入 BeautifulSoup 的 select 方法
问题描述
所以我一直在阅读在线书籍“Automate the Boring Stuff with 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')
检查员结果的示例。 在本书中,目标是获取所有出现在谷歌搜索结果页面上的链接。为此作者使用了soup.select('r .a') 行。但是当我使用检查器时,我会看到“a href”标签。
就我自己而言,我还想抓取显示在搜索结果页面上的链接的标题/标题。检查器突出显示“h3 类”标签。我试图通过告诉 select 查找类属性等于“LC20lb”的标签来选择它,但我一直得到一个空列表作为输出。
所以我的问题是,一旦检查员帮助我们缩小焦点,我们如何知道哪个标签是合适的选择?就像作者怎么知道我们应该使用“.r a”而不是“a href”标签?一般来说,一旦选择器向我显示了特定元素,我应该选择多远,即哪个祖先?
解决方案
如果你做'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 标签,而不是 a href 标签的所有实例。
希望这能回答你的问题!
推荐阅读
- recaptcha - 在 Recaptcha 上使用 google 是否必须使用 HTTPS?它可以在“http”网站上使用吗?
- json - 将 JSON 对象转换为 URL 查询字符串的命令行
- c# - NullReferenceException 与 Ckeditor 5 和 ASP.NET MVC 捆绑错误?
- vue.js - Vue - 从循环外部清除真假切换
- c# - Microsoft.AspNet.OData 中复杂类型和属性的计算
- javascript - 为什么刷新父窗口后弹出窗口保持在最前面?
- javascript - 从 JSON 中的对象读取数据
- adb - 无法在 Raspberry pi 3B Android Things 上使用串行调试控制台
- vue.js - 如何延迟到创建缩略图?
- c# - 如何在 MongoDB C# 中使用地理空间查询?