soup.select ( )选择标签问题
这个知识点的内容在第一周第二节课程里面有详细的解说,弄不懂的同学可以多看几遍。
代码原型是这样的:
import requests
from bs4 import BeautifulSoup
web_data = requests.get('url')
soup = BeautifulSoup(web_data.text,'lxml')
data = soup.select('选择内容')
print (data)
一个典型的例子
关于'选择内容'方面还是有同学有疑问。
比如这个url:http://www.meihua.info/?page=1
要截取一篇文章的以下字段:
- 日期(今天)
- 阅读量(阅读65)
- 类型(业界)
- 文章标签(微信,阅读量)
那么在浏览器中鼠标右键点击审查 -> 找到字段的具体代码 -> 右键选择Copy -> Copy selector ,如下:
复制的内容如下:
body > div.main-frame > div.news-list-list > ul > li:nth-child(1) > div.time > span > span:nth-child(1)
如果直接那这个作为select ( )的参数是不行的,li:nth-child(1)
要去掉,这是CSS的高级选择器,而且select ( )不支持这种类型,去掉就行。然后还要查看html结构的层级,一步步加上去,不懂的可以多尝试多总结。
html层级结构
以下是我修改的select ( )参数内容:
body > div.main-frame > div.news-list-list > ul.list.news-list > li > div.time > span.desc-font.date > span
运行代码试一下:
import requests
from bs4 import BeautifulSoup as bs
web_data = requests.get('http://www.meihua.info/?page=1')
soup = bs(web_data.text,'lxml')
post_date = soup.select('body > div.main-frame > div.news-list-list > ul.list.news-list > li > div.time > span.desc-font.date > span')[0]
print (post_date.get_text())
--输出结果--
今天
其它字段可以自行尝试。