2015-05-09 25 views
1

我想在源代码中搜索所有'1'并打印'1'的位置例如:<div id="yeahboy">1</div>'1'可以被任何其他字符串替换。我想看看那个字符串周围的标签。Python 3 BeautifulSoup4搜索源页面中的文本

+0

你是指那个'1'*的位置是什么意思? – har07

+0

@ har07I只是想打印源代码中所有'1'的位置1可以用任何其他字符串 –

+0

来代替定义“位置”。你的意思是,你想打印容器元素:'

1
'? – har07

回答

1

考虑这个方面例如*:

from bs4 import BeautifulSoup 

html = """<root> 
<div id="yeahboy">1</div> 
<div id="yeahboy">2</div> 
<div id="yeahboy">3</div> 
<div> 
    <span class="nested">1</span> 
</div> 
</root>""" 
soup = BeautifulSoup(html) 

您可以使用find_all()传递parameter True以表明你只想元素节点(而非子文本节点),并且parameter text="1"以表明该元素你想必须有文本内容等于“1” - 或者你想搜索换任何其他文本:

for element1 in soup.find_all(True, text="1"): 
    print(element1) 

输出:

<div id="yeahboy">1</div> 
<span class="nested">1</span> 

*)对于OP:对于未来的问题,尝试给出一个上下文,就像上面的上下文示例一样。这会让你的问题更具有具体的并且更容易回答 - 因为人们不需要自己创建环境,这可能与你实际拥有的环境无关。

+0

事情是我不知道它们的位置,我想用脚本来找到它们全部 –

+0

@bob上面的代码演示了如何在没有先验知识的情况下通过文本查找元素关于元素的位置。这个例子的任何问题? – har07

+0

它确实有效,但有一个但是。如果文本包含所有字符串,它将起作用。如果我想查看一个字符串的一部分,它不起作用,例如:(这项工作)'从bs4导入请求 导入BeautifulSoup url ='http://www.editionsmosquito.com/exposition.php' r (true,text =“Expositions”): print(element1)'确实这个工作,但是当我这样做时: '= requests.get(url) '对于soup.find_all中的element1(True,text =“Expo”): print(element1)'即使是包含世博会的博览会,它也不打印它,你能帮助我吗? –