获得第二段和形式的beautifulsoup4

时间:2015-11-09 23:06:02

标签: python beautifulsoup

我想打印出第二个<p>中的段落和网页中的表单方法。但是,我只能找到打印出第一段的方法。我的HTML结构如下所示:

<body>
    <p> part1 </p>
    <p> part2 </p>
    <form method="post"> <p> content inside form </p> </form>
</body>

如果我只想打印出第2部分段落和表格中的内容,我该怎么办? 到目前为止我有:

b = BeautifulSoup(r.text, "lxml");
#this print out p of part 1
print b.p.text  

由于

2 个答案:

答案 0 :(得分:1)

要在第二个p中查找内容,您可以使用findNext

secondP = print b.find("p").findNext("p").get_text()
print secondP

要查找表单中的内容,您可以获取form标记,然后从中提取p标记

formP = soup.find("form", attrs={ "method" : "post" }).find("p").get_text()
print formP 

答案 1 :(得分:0)

使用find_all()获取所有p代码的列表。访问列表中的第二个标记(在索引1处)。

from bs4 import BeautifulSoup

html_doc = '''<body>
    <p> part1 </p>
    <p> part2 </p>
    <form method="post"> <p> content inside form </p> </form>
</body>'''

b = BeautifulSoup(html_doc, "lxml")
print b.find_all('p')[1].text
  

find_all()

     

签名:find_all(name,attrs,recursive,string,limit,   ** kwargs)

     

find_all()方法查看标记的后代并检索   与您的过滤器匹配的所有后代。

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all