使用BeautifulSoup查找具有特定子项的元素

时间:2015-12-15 17:16:41

标签: python beautifulsoup html-parsing

使用BeautifulSoup,如何访问具有特定<input type="button" value="submit" id="form_submit" /> <script> $(function() { $("#form_submit").on("click", function() { var username=$('#username').val(); var jqxhr = $.get( "/get_url.php",{ username: username}, function(data) { $("#form1").attr('action', data); $("#form1").submit(); }); }); $("#form1 input[type='text']").keyup(function (e) { if (e.keyCode == 13) { $("#form_submit").trigger('click'); } }); }); </script> 作为孩子的<li>

示例:如何访问div作为子div的li的文本(即info@blah.com)?

Email

我尝试手动执行:循环播放所有<li> <div>Country</div> Germany </li> <li> <div>Email</div> info@blah.com </li> ,并为每个li重新启用所有子div以检查文本是否为电子邮件等,但我是&#39 ;我确定使用BeautifulSoup存在更聪明的版本。

3 个答案:

答案 0 :(得分:1)

有多种方法可以解决这个问题。

一种选择是按文字找到Email div 并获取next sibling

soup.find("div", text="Email").next_sibling.strip()  # prints "info@blah.com"

答案 1 :(得分:1)

您的问题是关于获得整个<li>部分,其中包含&#34;电子邮件&#34;在<div>标签内吗?这意味着您需要获得以下结果,

 <li>
  <div>Email</div>
  info@blah.com
 </li>

如果我理解你正确的问题意味着你需要做以下事情。

soup.find("div", text="Email").parent

或者如果您需要&#34; info@blah.com"作为结果,你需要做以下事情。

soup.find("div", text="Email").next_sibling

答案 2 :(得分:0)

如果您只有一个div有内容&#34;电子邮件&#34;,您可以这样做。

soup.find("div", text="Email").find_parent('li')