use*_*725 8 python beautifulsoup find siblings scrape
网页是这样的:
<h2>section1</h2>
<p>article</p>
<p>article</p>
<p>article</p>
<h2>section2</h2>
<p>article</p>
<p>article</p>
<p>article</p>
Run Code Online (Sandbox Code Playgroud)
如何在其中找到包含文章的每个部分?也就是说,找到h2后,找到nextsiblings
直到下一个h2.
如果网页如下:(通常情况下)
<div>
<h2>section1</h2>
<p>article</p>
<p>article</p>
<p>article</p>
</div>
<div>
<h2>section2</h2>
<p>article</p>
<p>article</p>
<p>article</p>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以编写如下代码:
for section in soup.findAll('div'):
...
for post in section.findAll('p')
Run Code Online (Sandbox Code Playgroud)
但是,如果我想获得相同的结果,我应该如何处理第一个网页?
我想你可以这样做:
for section in soup.findAll('h2'):
nextNode = section
while True:
nextNode = nextNode.nextSibling
try:
tag_name = nextNode.name
except AttributeError:
tag_name = ""
if tag_name == "p":
print nextNode.string
else:
print "*****"
break
Run Code Online (Sandbox Code Playgroud)
鉴于:
<h2>section1</h2>
<p>article1</p>
<p>article2</p>
<p>article3</p>
<h2>section2</h2>
<p>article4</p>
<p>article5</p>
<p>article6</p>
Run Code Online (Sandbox Code Playgroud)
输出:
article1
article2
article3
*****
article4
article5
article6
*****
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15476 次 |
| 最近记录: |