我正在使用beautifulSoup4处理网页抓取工具。我想获得文章的文字和图片,但有一些问题! HTML代码是这样的:
<div>
some texts1
<br />
<img src="imgpic.jpg" />
<br />
some texts2
</div>
我得到了全文:
post_soup.get_text()
并照常将div
中的所有图片与urllib2
一起保存
最后我将它们保存在一个html页面中,并将所有文本放在顶部,最后将图像放在顶部,但我想将它们保存在新的html页面中,就像我抓取它们的页面一样,我的意思是先some texts1
然后{{1}然后image
有什么建议吗?
答案 0 :(得分: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
答案 1 :(得分: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'