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())

--输出结果--
今天

其它字段可以自行尝试。

results matching ""

    No results matching ""