我想打印出第二个<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
由于
答案 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