python爬虫在爬取网页内容时,需要将内容连同内容格式一同爬取过来,然后在自己的web页面中显示,自己的web页面为django框架
首先定义一个变量html,变量值为一段HTML代码
>>> print(html) <div id=1> my <br> name <br> is JAY <br> </div>
,我们现在要取div里面的内容,在自己的web页面中显示,空格和换行符等都以HTML代码的形式抓取。最终想要的数据为
my <br>
name <br>
is JAY <br>
(1)首先soup.string是不行的,因为div下面不止一个子标签
>>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup(html, 'html.parser') >>> soup.string >>>
可以看到返回值为空
(2)使用get_text()也是不行的,因为get_text()获取的字符串都是转义后的,我们要的是原生的HTML代码
>>> soup.get_text() ' xa0xa0my xa0 name is xa0 JAY '
不过get_text()在其他很多场合很实用,它可以获取标签下的所有子孙标签内的文本内容
同时可以指定参数
>>> soup.get_text('|') #所有tag文本内容的分隔符 ' xa0xa0my | xa0 name | is xa0 JAY | ' >>> soup.get_text('|', strip=True) #去掉文本内容前后的空白 'my|name|is xa0 JAY'
或者使用soup.stripped_strings生成器,获取文本内容手动处理
(3)可以使用.contents
>>> content_soup = soup.div.contents >>> content_soup [' xa0xa0my ', <br/>, ' xa0 name ', <br/>, ' is xa0 JAY ', <br/>, ' '] >>> content_soup = [str(i) for i in content_soup] #列表中的所有值改换为字符串类型 >>> content_text = ''.join(content_soup) #合并列表到一个字符串中 >>> content_text ' xa0xa0my <br/> xa0 name <br/> is xa0 JAY <br/> ' >>> print(content_text) my <br/> name <br/> is JAY <br/>
至此,就可以直接将变量放到web页面中