首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么bs4中的find_next_sibling可以在一行代码上工作,而不能在另一行非常相似的代码上工作?

在bs4中,find_next_sibling是用于查找当前元素的下一个兄弟元素的方法。它可以在一行代码上工作,而在另一行非常相似的代码上却不能工作的原因可能有以下几个方面:

  1. HTML结构不同:find_next_sibling方法是基于HTML文档的结构来查找元素的,如果两行代码所处理的HTML结构不同,那么find_next_sibling方法可能会返回不同的结果。例如,如果两行代码所处理的HTML文档中,一个元素的下一个兄弟元素是存在的,而另一个元素的下一个兄弟元素是不存在的,那么find_next_sibling方法在第一行代码上可以找到下一个兄弟元素,而在第二行代码上则找不到。
  2. 元素选择器不同:find_next_sibling方法可以接受一个选择器作为参数,用于指定要查找的兄弟元素的条件。如果两行代码所使用的选择器不同,那么find_next_sibling方法可能会返回不同的结果。例如,如果第一行代码使用的选择器是一个具体的CSS类名,而第二行代码使用的选择器是一个标签名,那么find_next_sibling方法在第一行代码上可以找到符合条件的兄弟元素,而在第二行代码上则找不到。
  3. 调用位置不同:find_next_sibling方法是基于当前元素进行查找的,如果两行代码所调用的位置不同,那么find_next_sibling方法可能会返回不同的结果。例如,如果第一行代码是在某个元素的父元素上调用find_next_sibling方法,而第二行代码是在该元素本身上调用find_next_sibling方法,那么find_next_sibling方法在第一行代码上可以找到下一个兄弟元素,而在第二行代码上则找不到。

综上所述,bs4中的find_next_sibling方法在一行代码上可以工作,而在另一行非常相似的代码上不能工作,可能是由于HTML结构不同、元素选择器不同或调用位置不同等原因导致的。为了更准确地分析问题,建议提供具体的代码示例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python在Finance上的应用5 :自动获取是S&P 500的成分股

我可以给你一个清单,但实际上获得股票清单可能只是你可能遇到的众多挑战之一。 在我们的案例中,我们需要一个标普500公司的Python列表。...import requests bs4是Beautiful Soup,pickle是可以让我们很容易地保存这些公司名单,而不是每次运行时都敲击维基百科(记住及时更新这个清单!)...BeautifulSoup所做的工作基本上可理解为将源代码转换为BeautifulSoup对象,我们可以将其视为典型的Python Object。 有时会出现维基百科试图拒绝Python的访问。...目前,在我写这篇文章的时候,代码工作时没有改变头文件。...,在标题行之后(这就是为什么要写[1:]),说的是股票行情是“表格数据”(td),通过抓住它的.text,将此代码添加到列表 tickers。

2.3K10
  • Python爬虫系列:BeautifulSoup库详解

    之前了解过Requests库的用法,在Python爬虫中,用到BeautifulSoup4库的技术路线为Requests库+BeautifulSoup4库+re库,这里小编准备先聊聊Beautiful...至于为什么后面有个4(代表版本号),因为BeautifulSoup3项目已停止开发,BeautifulSoup4也已被纳入到bs4里面了,所以在引用该库时需要使用: from bs4 import BeautifulSoup...3.BeautifulSoup库的简单使用 有兴趣的小伙伴可以先试试运行下面的这段代码(建议输出语句逐条运行): import requests from bs4 import BeautifulSoup...百度:解释器,又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。...它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。 大概意思和编译器差不多,相关知识请自行百度。

    1.3K30

    27 个问题,告诉你Python为什么这么设计

    如果您习惯于阅读和编写使用一种风格的代码,那么在阅读(或被要求编写)另一种风格时,您至少会感到有些不安。 许多编码风格将开始/结束括号单独放在一行上。...因为第二行中使用的 [1, 2] 的 id 与第一行中的 id 不同。...可以使用 doctest 和 unittest 模块或第三方测试框架来构造详尽的测试套件,以运行模块中的每一行代码。 适当的测试规程可以帮助在Python中构建大型的、复杂的应用程序以及接口规范。...另一个次要原因是冒号使带有语法突出显示的编辑器更容易工作;他们可以寻找冒号来决定何时需要增加缩进,而不必对程序文本进行更精细的解析。 为什么Python在列表和元组的末尾允许使用逗号?...如果列表,元组或字典的字面值分布在多行中,则更容易添加更多元素,因为不必记住在上一行中添加逗号。这些行也可以重新排序,而不会产生语法错误。 不小心省略逗号会导致难以诊断的错误。

    6.7K11

    10个数据可视化技巧,让你一看就懂!

    但有时,你会希望在同一行或列中抛出不同的图表,相互补充和/或显示不同的信息片段。 为此,这里给出一个非常基本但必不可少的工具:subplots。如何使用它?很简单。...,其中只有两个图表,分布在两个不同的行中。...以类似的方式,我们还可以指定注释的对齐方式、字体大小和颜色,而「xytext」参数指示我们是否要在某个 x 或 y 方向移动注释。在上面的例子中,我们将在 y 轴上向下移动注释文本。...7.在数据中包含一行以显示阈值 在现实生活中的许多情况下,数据高于或低于某个阈值可能是问题提示信号或错误警告。...如果要在绘图中清楚地显示,可以使用以下命令添加一行: ax[0].axvline(32,0,c='r') 加在哪里?

    2.3K10

    python爬虫从入门到放弃(六)之 BeautifulSoup库的使用

    上一篇文章的正则,其实对很多人来说用起来是不方便的,加上需要记很多规则,所以用起来不是特别熟练,而这节我们提到的beautifulsoup就是一个非常强大的工具,爬虫利器。...在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib, 因为那些Python版本的标准库中内置的HTML解析方法不够稳定....基本使用 标签选择器 在快速使用中我们添加如下代码: print(soup.title) print(type(soup.title)) print(soup.head) print(soup.p) 通过这种...soup.标签名 我们就可以获得这个标签的内容 这里有个问题需要注意,通过这种方式获取标签,如果文档中有多个这样的标签,返回的结果是第一个标签的内容,如上面我们通过soup.p获取p标签,而文档中有多个...,但是这里有个特殊的就是class,因为class在python中是特殊的字段,所以如果想要查找class相关的可以更改attrs={'class_':'element'}或者soup.find_all

    1.8K100

    Google Go 风格指南

    清晰性要从读者的角度来看,而不是从代码的作者的角度来看,代码的易读性比易写性更重要。代码的清晰性有两个不同的方面: 该代码实际上在做什么? 为什么代码会这么做?...让代码自己说话(例如,通过代码中的名称本身进行描述),而不是添加多余的注释。通常情况下,注释最好是解释为什么要做某事,而不是解释代码在做什么。 Google 的代码库基本上是统一和一致的。...例如,在下面的每一行代码中,是否有 : 字符对于理解这一行至关重要。...// Bad: // 使用 = 而不是 := 可以完全改变这一行的含义 if user, err = db.UserByID(userID); err !...一致 一致性的代码是指在更广泛的代码库中,在一个团队或包的范围内,甚至在一个文件中,看起来、感觉和行为都是类似的代码。

    29220

    【一起学Python】STEAM游戏评测爬虫

    这样我们就能将需要的信息提取并一一打印出来了。但是这时候我们又发现了另一个问题,为什么这边打印出来的全都是英文,而且跟我们在网页上看到的评测也不一样啊。...原因其实是我们浏览器存了cookies,而且默认的语言是简体中文和英语,所以会把中文评测放在前面。 那么如何让我们的程序和浏览器输出结果一致呢?——添加headers。只需要添加一行就可以了。...鉴于评测可能非常非常多,大家一般也用不到,少量抓取还是直接自己控制参数吧~ 第五步,save and load 之前写代码的过程中,我们都是直接在控制台打印内容。...后面发现了一种更简单直接的操作,那就是通过在txt文件中添加制表符分隔,在粘贴进excel时实现自动分列。 现在直接添加写入文件的相关代码就可以了。...还是测试前50条的评论。 ? 可以发现,推荐的评论情绪偏于证明。而不推荐的评论中,虽然有少量的异常值,但是可以看到评论中存在明显的正面性语言。其他大部分数值是符合的。 最后附上此次文章的全部代码。

    9.2K60

    别找了,这是 Pandas 最详细教程了

    pandas 相当于 python 中 excel:它使用表(也就是 dataframe),能在数据上做各种变换,但还有其他很多功能。 如果你早已熟知 python 的使用,可以直接跳到第三段。...让我们开始吧: import pandas as pd 别问为什么是「pd」而不是「p」,就是这样。...更新数据 data.loc[8, column_1 ] = english 将第八行名为 column_1 的列替换为「english」 在一行代码中改变多列的值 好了,现在你可以做一些在 excel...它可以帮助你在一行中更加简单、高效地执行多个操作(.map() 和.plot())。 data.apply(sum) .apply() 会给一个列应用一个函数。...正如前面解释过的,为了优化代码,在一行中将你的函数连接起来。

    2K20

    R语言vs Python:数据分析哪家强?

    我们会平行使用Python和R分析一个数据集,展示两种语言在实现相同结果时需要使用什么样的代码。这让我们了解每种语言的优缺点,而不是猜想。...两种语言都打印出数据的第一行,语法也非常类似。Python在这里更面向对象一些,head是dataframe对象的一个方法,而R具有一个单独的head函数。...我们会得到非常相似的两张图,但是可以看到R的数据科学生态中有许多较小的软件包(GGally是最常用的R绘图包ggplot2的辅助包)和更多的通用可视化软件包。...R代码比Python更复杂,因为它没有一个方便的方式使用正则表达式选择内容,因此我们不得不做额外的处理以从HTML中得到队伍名称。R也不鼓励使用for循环,支持沿向量应用函数。...它可以作为Python在数据探索和统计等领域的补充,或者你惟一的数据分析工具。正如本文中所显示的,两种语言有许多相似的语法和实现方法,你不能在一个或另一个,或者两者中出错。

    3.5K110

    别找了,这是 Pandas 最详细教程了

    pandas 相当于 python 中 excel:它使用表(也就是 dataframe),能在数据上做各种变换,但还有其他很多功能。 如果你早已熟知 python 的使用,可以直接跳到第三段。...让我们开始吧: import pandas as pd 复制代码 别问为什么是「pd」而不是「p」,就是这样。...== french , column_1 ] = French 复制代码 在一行代码中改变多列的值 好了,现在你可以做一些在 excel 中可以轻松访问的事情了。...它可以帮助你在一行中更加简单、高效地执行多个操作(.map() 和.plot())。 data.apply(sum) 复制代码 .apply() 会给一个列应用一个函数。...正如前面解释过的,为了优化代码,在一行中将你的函数连接起来。

    1.2K00

    笨办法学 Python · 续 第六部分:SQL 和对象关系映射

    如果你不能在你的 python shell 中运行这个 Python 代码: >>> import sqlite3 你的 Python 就没有默认带有sqlite3。...你需要弄清楚为什么会丢失,并且很可能有另外一个包,你需要先安装它才能在 Python 中使用。...对于“表”,我是说就像一个电子表格,其中左边有行,顶部有列。通常,你将使用进入该列的某种数据来命名列。那么每一行代表你需要放入表的一件事情。这可以是一个帐户,一个人的名单及其信息,菜谱,甚至汽车。...对于大多数程序员来说,似乎这两个结构(表和树)不能共存,但是树和表实际上是非常相似的。你几乎可以使用任何树形结构,并将其映射到几乎任何矩阵上,但你必须了解 SQL 数据库的另一个方面:关系。...请记住,这不是一个非常有趣的工作,类似于看管一个大型的猫类动物园。猫,不是小猫。 在第六部分末尾,你将学到 SQL 在基本层面上的工作原理。

    1.6K20

    JS在浏览器和Node下是如何工作的?

    与这些工作在后台的 APIs 相搭配的是,我们要提供一个 回调(callback)函数,用以负责在 Web API 一旦完成后执行相应的 JS 代码。...Web API,然后尝试移动到接下来的一行 在此,并没有下一行,栈就会将 baz() 弹出,并依此将 bar() 和 foo() 也一一弹出 同时,Web API 在等待中度过 3 秒钟后,将回调 printHello...在 Node.js 中会怎样 当同样的事情发生在 Node.js 中时,就得做的更多些了 -- 因为 node 所承诺的能力也更强。在浏览器中,我们被能在后台做什么掣肘。...Node 遵循了类似于 Web APIs 的回调机制,并以和浏览器相似的方式工作。 ? 如果比较一下浏览器那张图和上面这张 node 的图,可以看到其相似之处。...,这二者虽然还是在单一线程上运行,而独立的 worker 线程则承担了提供异步 I/O 操作的功能。

    2.1K10

    让老板和客户一看就懂 ,赞不绝口的10个数据可视化技巧

    但有时,你会希望在同一行或列中抛出不同的图表,相互补充和/或显示不同的信息片段。 为此,这里给出一个非常基本但必不可少的工具:subplots。如何使用它?很简单。...,其中只有两个图表,分布在两个不同的行中。...以类似的方式,我们还可以指定注释的对齐方式、字体大小和颜色,而「xytext」参数指示我们是否要在某个 x 或 y 方向移动注释。在上面的例子中,我们将在 y 轴上向下移动注释文本。...7.在数据中包含一行以显示阈值 ---- 在现实生活中的许多情况下,数据高于或低于某个阈值可能是问题提示信号或错误警告。...如果要在绘图中清楚地显示,可以使用以下命令添加一行: ax[0].axvline(32,0,c='r') 加在哪里?

    1.8K20

    PHP小白必须要知道的php基础知识(超实用)

    很多人看到PHP就以为是程序员,就以为钱很多(虽然是事实),但是也要考虑下自己是不是适合这一行,知道PHP是什么吗?PHP都有什么样的功能,都能用来干嘛? PHP是什么?...执行方式 •PHP 代码被包含在特殊的起始符相结束符中,使得网页的脚本可以进出“PHP 模式”。...•相客户端的 Java 不同的是,PHP 代码是运行在服务端的。如果 在服务器上建立了如上例类似的代码,则在运行该脚本后,客户端就能 接收到其结果,但他们无法得知其背后的代码是如何运作的。...复合语句用大括号来标记代码块,如条件测试或循环,在大括号后面不要用分号。相其他语言不一样的是,在PHP中右括号(?>)前的分号不是必选的。 空白相换行符 一般来说,空白符在PHP中无关紧要。...可以将一个语句展开成任意行,或者将语句紧缩在一行。 可以利用这个灵活的格式来使代码更具有可读性(通过排列分配、缩进等)。一些懒惰的程序员利用这种自由的格式创建根本无法阅读的代码,这是不提倡的。

    72910

    干货 | 我从资深软件工程师学到的避坑大法

    仅仅编写这些测试并不能提高我代码的质量,而编写代码却可以。但是我从阅读测试代码中获得了写更好代码的直觉。 但是,并不只有这一种测试,这就是为什么有部署环境测试的原因。...最后我们使用了一个有角色访问控制的数据库(只有我们的机器可以与数据库对话)。我们的代码在启动时从这个数据库中获取秘密数据。这个能在开发、测试和产品之间很好地复制——在各自的数据库中都有机密。...我在维护过程中遇到了这个问题:系统为什么会降级,以及如何降级? 有两个原因可以解答为什么系统也会有降级的时候: 首先,系统不应当舍弃旧的东西,而是在已有的基础上增加更多功能。...与其修复哪里错了,即使只是「修改一行」,所做的第一件事应该是回滚版本。回到之前的工作状态,这是让客户恢复工作最快的方法。 过了这个时候,才应该看看哪里出了问题并修复那些 bug。...有时候,我觉得它没有工作的原因是因为写的代码有问题,而仔细阅读每一行代码后会陷入混乱,像是一种深度优先搜索。 之后,我的启发是,首先开始广度优先搜索,然后再深度优先搜索,去除最顶端的节点。

    57520

    Python爬虫:我这有美味的汤,你喝吗

    除非文档没有指定一个编码方式,这时你只要说明一下原始的编码方式就可以了。 ” 准备工作 在开始之前,确保已经安装好Beautiful Soup和lxml。如果没有安装,请参考下面的安装教程。...pip install bs4 pip install lxml 解析器 Beautiful在解析时依赖解析器,它除了支持Python标准库中的HTML解析器外,还支持一些第三方库(比如lxml)。...这一步不是由prettify( )方法做成的,而是在创建BeautifulSoup时就完成。 然后调用soup.title.string,这实际上是输出HTML中title节点的文本内容。...CSS选择器 Beautiful Soup还为我们提供了另一种选择器,就是CSS选择器。熟悉前端开发的小伙伴来说,CSS选择器肯定也不陌生。...实战 前言 如果你看到了这里,那么恭喜你完成了很多人不能做到的坚持,因为很少人能够看完上面杂而多的知识。 这次的实战内容,我带来的是爬取B站视频弹幕。 为什么是这个实战内容呢?

    2.4K10

    Python3网络爬虫实战-29、解析库

    所以说,利用它我们可以省去很多繁琐的提取工作,提高解析效率。 2. 准备工作 在开始之前请确保已经正确安装好了 BeautifulSoup 和 LXML,如没有安装可以参考第一章的安装过程。 3....解析器 BeautifulSoup 在解析的时候实际上是依赖于解析器的,它除了支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器比如 LXML,下面我们对 BeautifulSoup...可以自动更正格式,这一步实际上不是由 prettify() 方法做的,这个更正实际上在初始化 BeautifulSoup 时就完成了。...所以 soup.title 就可以选择出 HTML 中的 title 节点,再调用 string 属性就可以得到里面的文本了,所以我们就可以通过简单地调用几个属性就可以完成文本的提取了,是不是非常方便?...head 之后再次调用了 title 来选择的 title 节点元素,然后我们紧接着打印输出了它的类型,可以看到它仍然是 bs4.element.Tag 类型,也就是说我们在 Tag 类型的基础上再次选择得到的依然还是

    1.8K30

    27 个问题,告诉你Python为什么这么设计?

    如果您习惯于阅读和编写使用一种风格的代码,那么在阅读(或被要求编写)另一种风格时,您至少会感到有些不安。 许多编码风格将开始/结束括号单独放在一行上。...因为第二行中使用的 [1, 2] 的 id 与第一行中的 id 不同。...可以使用 doctest 和 unittest 模块或第三方测试框架来构造详尽的测试套件,以运行模块中的每一行代码。 适当的测试规程可以帮助在Python中构建大型的、复杂的应用程序以及接口规范。...另一个次要原因是冒号使带有语法突出显示的编辑器更容易工作;他们可以寻找冒号来决定何时需要增加缩进,而不必对程序文本进行更精细的解析。 为什么Python在列表和元组的末尾允许使用逗号?...如果列表,元组或字典的字面值分布在多行中,则更容易添加更多元素,因为不必记住在上一行中添加逗号。这些行也可以重新排序,而不会产生语法错误。 不小心省略逗号会导致难以诊断的错误。

    3.1K20
    领券