python - 使用BeautifulSoup时,html在某些搜索结果中需要不同索引号的数据

标签 python html beautifulsoup findall

我的网站格式存在问题,导致容器内的某些信息在一个搜索结果与下一个搜索结果中具有不同的索引号。

我正在从搜索结果中抓取一些数据。在少数情况下,位置/索引号会有所不同。

基本上,我需要从下面的 html 中抓取的确切文本是“7XB21”。

<dl class="last">
    ::before
    <dt>Part Code:</dt>
    <dd>
        "7XB21"
        <span class="separator">,</span>
    < /dd>
    <dt>Weight:</dt>
    <dd>97</dd>
</dl>

使用下面的 Python 代码很容易做到这一点,因为它得到了我需要的结果,即“7XB21”

modelcode_container = container.find_all("dd")
        modelcode = (modelcode_container[5].text)
 

但是! 一些被抓取的 HTML 代码虽然结构相同,但缺少上面示例显示的一些信息。下面是一个麻烦的 HTML 示例:

<dl class="last">
    <dt>Stock id:</dt>
    <dd>c12
        <span class="separator">,</span>
    </dd>
    <dt>Part Code:</dt>
    <dd>
        "8B727"
        <span class="separator">,</span>
    </dd>
    <dt>Weight:</dt>
    <dd>102</dd>
</dl>

你看出区别了吗?我需要指定一个不同的索引号来捕获正确的数据,在本例中为“8B727”。

我不知道如何进行设置,任何帮助将不胜感激。谢谢!

最佳答案

如果您确定 <dt>Part Code:</dt>发生在您可以使用 find_next_sibling() 之前获取 dd旁边的标签。

soup.find('dt',text="Part Code:").find_next_sibling('dd')

关于python - 使用BeautifulSoup时,html在某些搜索结果中需要不同索引号的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755083/

相关文章:

python - 从html文件中导入表的行作为python中的列表

python - BeautifulSoup 网页抓取,没有结果

python - 获取除 mailto : and tel: in BS4 Python decompose() 之外的所有 HTML 数据

python - 从 pdf 解析注释

python - 步入 python-bitstring 2.2.0

javascript - 高中生在简单的 HTML/JS 应用程序中处理持久状态的简单方法是什么?

html - CSS水平滚动不起作用

python - 如何让 Actor 从屏幕右侧滑出,然后重置回左侧

python - scrapy 错误 : exceptions. IOError:无法识别图像文件

javascript - 从 jquery 对象获取 HTML 元素的类型