菜鸡解析CSS(cascading style sheet)

以下代码将url中css样式为class:green的数据解析出来,并使用get_text()剔除标签结构;一般来说使用BeautifulSoup时需要CSS的标签结构,所以只需要在最后保存或者打印数据时调用get_text()

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
# 解析CSS
def spanCSS():
    url = "http://www.pythonscraping.com/pages/warandpeace.html"
    try:    html = urlopen(url)
    except HTTPError as e:  print(e)
    try:
        bsObj = BeautifulSoup(html, features="html5lib")
        nameList = bsObj.findAll("span", {"class": "green"})
    except AttributeError as e: print(e)
    for name in nameList:
        # 最后打印数据时,可以把标签结构删除
        print(name.get_text())

调用库BeautifulSoup时,这两个函数将经常被用到(主要是前两个参数tag和attributes):

find 其实等价于 findAll 的 limit 等于1 时的情形

findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)

tag:标签名;attribute:属性;recursive:支持递归查找;text:使用文本匹配; 

例如:

html.findAll("span", {"class":{"green", "red"}})

这行代码将会找出html文档中绿色和红色两种颜色的span标签<span class="green">Hello world!</span>

让标签的选择更具体:

bsObj.find("table",{"id":"giftList"}).tr
bsObj.table.tr

使用第一行代码而不是第二行,因为这样可以避免各种意外。页面布局总是不断变化的,一个标签这次是在表格中第一行的位置,
没准儿哪天就在第二行或第三行了。 如果想让你的爬虫更稳定,最好还是让标签的选择更加具体如果有属性,就利用标签的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值