如果我有一些HTML字符串:
s="<html><body><div><p>inner text</p></div><p>middle text</p>outside text</body></html>"
并尝试获取文字:
soup=BeautifulSoup(s, "html.parser")
ps=soup.findAll("p")
for i in ps:
print(i.text)
它给出了:
inner text
middle text
当结构相似时,我有一个web-page:
<article>
<p>text1</p>
<br>
some outside text1
<p>....</p>
<br>
some outside text2
</article>
</body>
但是当我使用
时soup2=BeautifulSoup(urllib.request.urlopen("http://www.wired.com/2016/08/review-samsung-galaxy-note-7/", "html.parser")
ab=soup2.find("article", {"itemprop":"articleBody"})
ps=ab.findAll("p")
它也给了我外面的文字2。
还有一些形式的javascript商业广告(<div id="wired-tired"
)在提取后我也可以获得外部文本1。
那里发生了什么?为什么我只能搜索p
的第二个文字以及为什么删除wired-tired
后第一个文字也可用?