2

我正在使用 beautifulSoup4 开发网页刮板。我想获取文章的文字和图片,但是有一些问题!html代码是这样的:

<div>
 some texts1
 <br />
 <img src="imgpic.jpg" />
 <br />
 some texts2
</div>

我得到了整个文本:

post_soup.get_text()

div并像往常一样保存所有图像urllib2最后我将它们保存在一个html页面中并将所有文本放在顶部和图像最后,但我想将它们保存在新的html页面中,就像我抓取它们的页面一样,我的意思是先some texts1然后imagesome texts2

请问有什么建议吗?

4

2 回答 2

1

这不是最好和正确的方法,但它应该有效:

from bs4 import BeautifulSoup

html = "<div>\
 some texts1\
 <br />\
 <img src=\"imgpic.jpg\" />\
 <br />\
 some texts2\
</div>"

soup = BeautifulSoup(html)
text = "+".join(soup.stripped_strings).split("+")

print text[0]
print soup.find("img")['src']
print text[1]

输出:

some texts1
imgpic.jpg
some texts2
于 2013-08-26T20:23:11.080 回答
0

而不是使用get_text(),我会使用将您想要prettify()的整个<div>部分作为字符串返回。这样,您始终可以保证在顶部和底部有正确的文本。从那里你可以剥离部分字符串以获得你想要的:

# post_soup is the <div> element you posted
s = post_soup.prettify()
split_s = s.split('<br/>')
top = split_s[0].strip('<div>')
bottom = split_s[-1].strip('</div>')

输出:

>>> top
u'\n some texts1\n '
>>> bottom
u'\n some texts2\n'
于 2013-08-26T20:24:49.757 回答