我的网站格式存在问题,导致容器内的某些信息在一个搜索结果与下一个搜索结果中具有不同的索引号。
我正在从搜索结果中抓取一些数据。在少数情况下,位置/索引号会有所不同。
基本上,我需要从下面的 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/