BeautifulSoup:在标签之外获取文本:意外行为

时间:2016-08-18 18:15:15

标签: python web-scraping beautifulsoup

如果我有一些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后第一个文字也可用?

0 个答案:

没有答案