Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何将文本和图像拼读在一起?_Python 2.7_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 2.7 如何将文本和图像拼读在一起?

Python 2.7 如何将文本和图像拼读在一起?,python-2.7,web-scraping,beautifulsoup,Python 2.7,Web Scraping,Beautifulsoup,我正在用beautifulSoup4制作网页刮板。我想得到文章的文字和图片,但有一些问题! html代码如下所示: <div> some texts1 <br /> <img src="imgpic.jpg" /> <br /> some texts2 </div> 并像往常一样使用urlib2将所有图像保存在div中 最后,我将它们保存在一个html页面中,最后将所有文本和图像放在顶部,但我想将它们保存在新的html页面中

我正在用beautifulSoup4制作网页刮板。我想得到文章的文字和图片,但有一些问题! html代码如下所示:

<div>
 some texts1
 <br />
 <img src="imgpic.jpg" />
 <br />
 some texts2
</div>
并像往常一样使用
urlib2
将所有图像保存在
div
中 最后,我将它们保存在一个html页面中,最后将所有文本和图像放在顶部,但我想将它们保存在新的html页面中,就像我刮取它们的页面一样,我的意思是首先
一些文本1
然后
图像
然后
一些文本2


有什么建议吗?

这不是最好、正确的方法,但应该可以:

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]

我不使用
get_text()
,而是将您想要的整个
部分作为字符串返回。这样,你就可以保证在顶部和底部都有正确的文本。从那里,您可以剥离部分字符串以获得所需内容:

# 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>')

+1怎样才能更好?它在顶部/底部正确地获取多行字符串。
some texts1
imgpic.jpg
some texts2
# 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'