如何在Python中提取<h1></h1>之间的文本?

问题描述 投票:0回答:2

我被困在

<h1>
</h1>
之间提取文本。

请帮助我。

我的代码是:

import bs4
import re
import urllib2

url2='http://www.flipkart.com/mobiles/pr?sid=tyy,4io&otracker=ch_vn_mobile_filter_Top%20Brands_All#jumpTo=0|20'
htmlf = urllib2.urlopen(url2)
soup = bs4.BeautifulSoup(htmlf)
#res=soup.findAll('div',attrs={'class':'product-unit'})
for res in soup.findAll('a',attrs={'class':'fk-display-block'}):
    suburl='http://www.flipkart.com/'+res.get('href')
    subhtml = urllib2.urlopen(suburl)
    subhtml = subhtml.read()
    subhtml = re.sub(r'\s\s+','',subhtml)
    subsoup=bs4.BeautifulSoup(subhtml)
    res2=subsoup.find('h1',attrs={'itemprop':'name'})
    if res2:
        print res2

输出:

<h1 itemprop="name">Moto G</h1>
<h1 itemprop="name">Moto E</h1>
<h1 itemprop="name">Moto E</h1>

但我想要这个:

Moto G
Moto E
Moto E
python html tags beautifulsoup extract
2个回答
5
投票

在任何 HTML 标签上,执行

get_text()
都会给出与该标签关联的文本。所以,你只需要在 res2 上使用
get_text()
即可。即,

if res2:
    print res2.get_text()

PS:顺便说一句,我认为代码中的这行

subhtml = re.sub(r'\s\s+','',subhtml)
是一项昂贵的操作。如果您所做的只是摆脱多余的空间,您可以这样做:

if res2:
    print res2.get_text().strip()

0
投票

你可以试试这个:

 res2=subsoup.find('h1',attrs={'itemprop':'name'})
    if res2:
        print res2.text

添加

res2.text
就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.