首页 新闻 会员 周边 捐助

python怎么去掉html的这两种标签,

-1
悬赏园豆:10 [已关闭问题] 关闭于 2017-01-15 18:11
page = BeautifulSoup(page_source.text,'lxml')
pageText = page.select('#chapterContent')
print(pageText)
取回想要的东西,是正确了。
但里面有好多,html标签。
像是这样的
[<div id="chapterContent">
            第一行<br/>
<br/>第二行<br/>
<br/>
    第三行<br/>
<br/>
    第四行<script>showContent("812", "370373");</script></div>]

不知道怎么去掉

只留下
"第一行
第二行
第三行
第四行“
别的都去掉
搜了很些方法,但都没不行
谢谢。。。


还没有的主页 还没有 | 小虾三级 | 园豆:531
提问于:2016-10-10 21:22
< >
分享
所有回答(3)
1

这里肯定要用beautifulsoup中的方法,好像有个get_text的方法

授之以渔 | 园豆:1112 (小虾三级) | 2016-10-10 21:50

get_text()要用在page这一行后,

但这样去掉了html标签,我后面的一句:page.select('#chapterContent')

就用不了了。

如果在 page.select('#chapterContent')之后用get_text()

是没有这个方法 的

支持(0) 反对(0) 还没有 | 园豆:531 (小虾三级) | 2016-10-12 15:31

@还没有: 你的pageText是个列表,取第一个元素pageText[0].get_text()试一下

支持(0) 反对(0) 授之以渔 | 园豆:1112 (小虾三级) | 2016-10-12 18:56

@授之以渔: 

page_source = requests.get(url,headers=Headers)
page = BeautifulSoup(page_source.text,'lxml')
pageText = page.select('#chapterContent')

代码是这样的,pageText[0].get_text()  也不行

支持(0) 反对(0) 还没有 | 园豆:531 (小虾三级) | 2016-10-12 19:18

@还没有: get_text()不能调用还是读不到数据?你用的是bs几?我这儿是bs4,是可以用的

支持(0) 反对(0) 授之以渔 | 园豆:1112 (小虾三级) | 2016-10-12 20:02

@授之以渔: bs4

page这里是可以用get_text()的。

但pageText这个是没有get_text()方法的

支持(0) 反对(0) 还没有 | 园豆:531 (小虾三级) | 2016-10-13 18:10

@还没有: 那就试一下getText(),或者

stripped_strings属性吧

支持(0) 反对(0) 授之以渔 | 园豆:1112 (小虾三级) | 2016-10-13 20:50
0

最简单的方法可以使用replace把<br/>全部替换成空,[<div id="chapterContent">这种可以直接replace;如果觉得这个不好,可以用正则来匹配删除,匹配的方式可以匹配div标签即可

西越泽 | 园豆:10775 (专家六级) | 2016-10-10 21:52

取回的pageText是个list类型。而且只是一个无素,replace不能用吧

正由我一用就出错:

Traceback (most recent call last):
  File "H:/PycharmProjects/xiaoshui/src/main.py", line 16, in <module>
    text = re.findall(r,pageText)
  File "E:\Python\Python35-32\lib\re.py", line 213, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object
支持(0) 反对(0) 还没有 | 园豆:531 (小虾三级) | 2016-10-12 15:28

@还没有: 额,好吧,原以为你返回得就已经处理成string了,如果是list得话,这个应该更简单,使用\r\n的组合(有可能是\r有可能是\n或者两个的组合),然后split下,拆成数组,然后数组中的每个元素单独处理,处理完成后拼接成最后的结果即可。

支持(0) 反对(0) 西越泽 | 园豆:10775 (专家六级) | 2016-10-16 23:49
0

正则:

/[^\u4e00-\u9fa5]/igm

张云山 | 园豆:642 (小虾三级) | 2016-10-12 09:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册