遇到一个平级标签的页面,如下显示:
Title 1. 测试标题一
测试一小标题1
测试一小标题2
测试一小标题3
2. 测试标题二
测试二小标题1
测试二小标题2
测试二小标题3
3. 测试标题三
测试三小标题1
测试三小标题2
测试三小标题3
测试三小标题4
4. 测试标题四
测试四小标题1
测试四小标题2
我最终要取得的值是
测试标题一
测试一小标题1,小标题1的链接 测试一小标题2,小标题2的链接
...
测试标题四
测试四小标题1,小标题1的链接 测试四小标题2,小标题1的链接
我原本使用的是
h2_a = soup.find_all('h2') for i_a in h2_a: print i_a
这样是可以把需要的h2取到,但想要在继续循环去那些小标题时候,由于得到type(i_a)为
就不知道要怎么取了。
问大神给指点一下。
soup.find_all('h2', class_=None)
这样就可以直接查找到你需要的了。
I can't spell Chinese for the bad OS.
I thinke that we can solve this question using re
.
import re resList = b = re.findall(r'<h2>(.*?)</h2>([\w\W]*?)(?=((<h2>)|(</body>)))',html.replace('\n',''))
then: suppose a
in resList
, a[0]
is the parent title, and a[1]
is the sub content.
try it.
h2_a = soup.find_all('h2') for i_a in h2_a: if i_a.a: print (i_a.text,',',i_a.a['href']) else: print (i_a.text)
python3下的。python2的print不知道怎么写了,不知是否符合你的要求