鱼C论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 97|回复: 6

[已解决]为什么BeautifulSoup 用.contents输出子节点会包含换行符\n

[复制链接]
最佳答案
0 
发表于 2019-9-8 10:15:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 GiovanniMRQ 于 2019-9-8 10:33 编辑
  1. import requests
  2. import bs4
  3. headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '}
  4. res = requests.get('https://movie.douban.com/top250', headers=headers)
  5. soup = bs4.BeautifulSoup(res.text, 'html.parser')
  6. movies = []
  7. targets = soup.find_all('div', class_='hd')
  8. for each in targets:
  9.     temp = each.a.contents
  10.     movies.append(temp)
  11. print(movies)
复制代码

QQ图片20190908100807.png

                               
登录/注册后可看大图

为什么用这段代码输出<a>标签下的子节点的时候出来的不只是三个<span>标签,还有很多换行符\n,怎么去掉他正常输出?求大神解答


最佳答案
2019-9-8 19:14:30
本帖最后由 傻纸 于 2019-9-8 19:25 编辑

不知道你最后要输出一个什么格式,去掉字符串里的一些东西,是字符串的基本操作吧,比如用place方法
  1. import requests
  2. import bs4
  3. headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '}
  4. res = requests.get('https://movie.douban.com/top250', headers=headers)
  5. soup = bs4.BeautifulSoup(res.text, 'html.parser')
  6. movies = []
  7. targets = soup.find_all('div', class_='hd')

  8. for each in targets:
  9.     temp = each.text
  10.     movies.append(temp.replace("\n","").replace("\xa0",""))

  11. for i in range(len(movies)):
  12.         print(movies[i])
复制代码


1111.jpg
QQ图片20190908101311.png
QQ图片20190908101311.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
20 
发表于 2019-9-8 19:14:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻纸 于 2019-9-8 19:25 编辑

不知道你最后要输出一个什么格式,去掉字符串里的一些东西,是字符串的基本操作吧,比如用place方法
  1. import requests
  2. import bs4
  3. headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '}
  4. res = requests.get('https://movie.douban.com/top250', headers=headers)
  5. soup = bs4.BeautifulSoup(res.text, 'html.parser')
  6. movies = []
  7. targets = soup.find_all('div', class_='hd')

  8. for each in targets:
  9.     temp = each.text
  10.     movies.append(temp.replace("\n","").replace("\xa0",""))

  11. for i in range(len(movies)):
  12.         print(movies[i])
复制代码


1111.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
27 
发表于 2019-9-8 21:32:04 | 显示全部楼层
  1. import requests, bs4,re
  2. headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '}
  3. res = requests.get('https://movie.douban.com/top250', headers=headers)
  4. txt=res.text.replace('&nbsp;','')
  5. soup = bs4.BeautifulSoup(txt, 'lxml')
  6. movies = []

  7. for d in soup.find_all(class_='hd'):
  8.     t= [i for i in re.split('\n', d.text)if len(i)>0]
  9.     movies.append(t)
  10.     print(t)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
27 
发表于 2019-9-8 21:34:19 | 显示全部楼层
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2019-9-9 11:23:00 | 显示全部楼层
我其实知道咋去除这个换行。。。我就是好奇为啥会有个这东西,还是谢谢各位啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
1707 
发表于 2019-9-9 11:25:32 | 显示全部楼层
GiovanniMRQ 发表于 2019-9-9 11:23
我其实知道咋去除这个换行。。。我就是好奇为啥会有个这东西,还是谢谢各位啦

为了html页面显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2019-9-9 11:27:05 | 显示全部楼层
塔利班 发表于 2019-9-9 11:25
为了html页面显示

懂了,感谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2019-9-20 19:37

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表