【问题标题】:Is there a way to find the exact path of an element in the requests module in Python?有没有办法在 Python 的 requests 模块中找到元素的确切路径?
【发布时间】:2019-12-22 22:02:44
【问题描述】:

有没有办法在 Beautiful Soup 对象的源中选择确切的“div”?例如,假设我们有这样的汤:

    <div class="dialog-shadow" id="popupMenu1" onblur="hidePopup();" onmouseout="closePopup = contextMenuInputHasFocus() ? null : setTimeout('hidePopup()',500);" onmouseover="if(closePopup!=null){clearTimeout(closePopup);closePopup=null}"></div>
<div id="popupMenu2" onblur="hidePopup();" onmouseout="closePopup = contextMenuInputHasFocus() ? null : setTimeout('hidePopup()',500);" onmouseover="if(closePopup!=null){clearTimeout(closePopup);closePopup=null}"></div>
<div class="shadow" id="popupMenu3" onblur="hidePopup3();hidePopup();" onmouseout="closePopup = setTimeout('hidePopup();', 500); closePopup3 = setTimeout('hidePopup3()',500);" onmouseover="if(closePopup!=null){clearTimeout(closePopup);closePopup=null};if(closePopup3!=null){clearTimeout(closePopup3);closePopup3=null};"></div>
<div id="container">
<div class="background-menu-dark shadow" id="navHolder">
<span class="customBranding" id="logo" onclick="loadView(V_SUMMARY);" title="Özet Görünümü"><img height="40" src="Branding/SmallBanner.jpg?ts=20140403111116"/></span>
<div id="navigation">
<ul id="navigationLargeWidth">
<li id="mainInboxLink">

我想在这片汤中找到第三个类是“影子”的 div。但是当我做这样的事情时,它会返回None:

soup.find('div',attrs={"class":"shadow"})

我知道它应该类似于“ABC-->BC-->C”如果我想在汤中找到 C,但是有没有一种方法可以通过知道它的唯一类或 ID 来找到 C ?

(soup.select("div:nth-of-type(3))) 不是我要找的)

【问题讨论】:

  • 我只看到该类的 2 个 div。有我们可以使用的网址吗?

标签: python beautifulsoup python-requests


【解决方案1】:

我只看到该类的 2 个 div。但是,您的 nth-of-type 可能失败的原因是您不包括该课程。除非有某种原因(你没有给出)为什么nth-of-type 本身是不可接受的。

div.shadow:nth-of-type(3)

如果没有合适的 html 进行测试,我无法确定索引或内容是否是动态加载的(如果来自网页)

如果您尝试动态构建路径,那么类似this?

对于具有唯一类的 div

select_one('div.shadow')

【讨论】:

  • 这是关于我大学的邮件页面的。不幸的是,我将接收未读邮件,无论您是否看到网址都没关系。但我无法理解“div.shadow:nth-of-type(3)”那部分。让我说清楚。我想找到一个 div(现在是哪个并不重要),这个 div 有一个 uniqie 类。忘记影子一。我可以通过执行上面显示的操作来选择它吗?提前致谢
  • 你可以做 select_one('div.shadow') 如果它返回 None 那么元素可能是动态添加的。不确定 bs4 如何处理 iframe/frame - 但值得检查是否存在父 iframe/frame。
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 2021-07-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 2015-04-10
  • 2016-07-13
相关资源
最近更新 更多