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>]
不知道怎么去掉
只留下
"第一行
第二行
第三行
第四行“
别的都去掉
搜了很些方法,但都没不行
谢谢。。。
这里肯定要用beautifulsoup中的方法,好像有个get_text的方法
get_text()要用在page这一行后,
但这样去掉了html标签,我后面的一句:page.select('#chapterContent')
就用不了了。
如果在 page.select('#chapterContent')之后用get_text()
是没有这个方法 的
@还没有: 你的pageText是个列表,取第一个元素pageText[0].get_text()试一下
@授之以渔:
page_source = requests.get(url,headers=Headers) page = BeautifulSoup(page_source.text,'lxml') pageText = page.select('#chapterContent')
代码是这样的,pageText[0].get_text() 也不行
@还没有: get_text()不能调用还是读不到数据?你用的是bs几?我这儿是bs4,是可以用的
@授之以渔: bs4
page这里是可以用get_text()的。
但pageText这个是没有get_text()方法的
@还没有: 那就试一下getText(),或者
stripped_strings属性吧
最简单的方法可以使用replace把<br/>全部替换成空,[<div id="chapterContent">这种可以直接replace;如果觉得这个不好,可以用正则来匹配删除,匹配的方式可以匹配div标签即可
取回的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
@还没有: 额,好吧,原以为你返回得就已经处理成string了,如果是list得话,这个应该更简单,使用\r\n的组合(有可能是\r有可能是\n或者两个的组合),然后split下,拆成数组,然后数组中的每个元素单独处理,处理完成后拼接成最后的结果即可。
正则:
/[^\u4e00-\u9fa5]/igm