写CSS选择器时标签的class属性值中有空格的问题
1 问题描述
HTML代码片段为:
<div class="alert alert-warning">
请至“随书下载”下载本书的示例程序。
</div>
<div class="book-intro readmore">
本书通过正在学习机器学习的程序员绫乃和她朋友美绪的对话,结合回归和分类的具体问题,逐步讲解了机器学习中实用的数学基础知识。其中,重点讲解了容易成为学习绊脚石的数学公式和符号。同时,还通过实际的Python 编程讲解了数学公式的应用,进而加深读者对相关数学知识的理解。
</div>
要想抓取<div class="book-intro readmore">...</div>
标签中的文本,根据我写css选择器的经验,写为:
div.“book-intro readmore”
但是运行结果出错:
看来,我想当然的解决方案行不通。
2 解决方案
标签的属性值中凡是出现空格的地方,在写CSS选择器的时候,都用.
代替,即本例的CSS选择器应该写成:
'div.book-intro.readmore'
接下来给出完整的代码:
# iTuringScrape.py
# 2020-08-27
import requests
from bs4 import BeautifulSoup
url = "https://www.ituring.com.cn/book/2636"
req = requests.get(url)
bs = BeautifulSoup(req.text,features='html.parser')
sr = bs.select('div."book-intro readmore"')
#sr = bs.select('div.book-intro.readmore')
print(sr)
作者:阿智智
来源链接:https://blog.csdn.net/RobertChenGuangzhi/article/details/108068695
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。