BS4库详解

作者:无名 - 其它综合 -

  1 from bs4 import beautifulsoup
  2 
  3 
  4 
  5 
  6 html = """
  7 lt;htmlgt;lt;headgt;lt;titlegt;this is a python demo pagelt;/titlegt;lt;/headgt;
  8 lt;bodygt;
  9 lt;p class="title"gt;lt;agt;the demo python introduces several python courses.lt;/agt;lt;/pgt;
 10 lt;p class="course"gt;python is a wonderful general-purpose programming language. you can learn python from novice to professional by tracking the following courses:
 11 lt;a href="http://www.icourse163.org/course/bit-268001" class="py1" id="link1"gt;lt;b class="element"gt;basic pythonlt;/bgt;lt;/agt; and lt;a href="http://www.icourse163.org/course/bit-1001870001" class="py2" id="link2"gt;advanced pythonlt;/agt;.lt;/pgt;
 12 lt;/bodygt;lt;/htmlgt;
 13 """
 14 
 15 soup = beautifulsoup(html,‘lxml‘)
 16 #基本使用
 17 # print(soup.prettify())
 18 # print(soup.title.string)
 19 
 20 #标签选择器
 21 #选择元素
 22 # print(soup.title)
 23 # print(type(soup.title))
 24 # print(soup.head)
 25 # print(soup.p)#返回第一个tag
 26 #
 27 # #获取名称
 28 #
 29 # print(soup.title.name)
 30 #
 31 # #获取属性
 32 # print(soup.a.attrs[‘href‘])
 33 # print(soup.a[‘href‘])
 34 #
 35 # #获取内容
 36 # print(soup.p.string)
 37 #
 38 # #嵌套选择
 39 # print(soup.head.title.string)
 40 
 41 #子节点和子孙节点
 42 # print(soup.body.contents)#获取子节点,返回列表类型
 43 # print(soup.body.children) #返回迭代器类型
 44 # for i,child in enumerate(soup.body.children):
 45 #     print(i,child)
 46 
 47 # print(soup.body.descendants) #子孙节点,返回迭代类型
 48 # for i,child in enumerate(soup.body.descendants):
 49 #     print(i,child)
 50 
 51 #父节点和祖先节点
 52 # print(soup.a.parent)
 53 #
 54 # print(list(enumerate(soup.a.parents)))
 55 
 56 #兄弟节点
 57 # print(list(enumerate(soup.a.next_siblings)))
 58 # print(list(enumerate(soup.a.previous_siblings)))
 59 
 60 #标准选择器
 61 #find_all(name,attrs,recursive,text,**kwargs) 可根据标签名、属性、内容查找文档
 62 #name
 63 # print(soup.find_all(‘p‘))
 64 # print(type(soup.find_all(‘p‘)[0]))
 65 # for i in soup.find_all(‘p‘):
 66 #     print(i.find_all(‘a‘)) #嵌套选择
 67 
 68 # #attrs
 69 # print(soup.find_all(attrs={‘href‘:"http://www.icourse163.org/course/bit-268001"}))
 70 # print(soup.find_all(attrs={‘id‘:‘link1‘}))
 71 #
 72 # print(soup.find_all(id=‘link1‘))
 73 # print(soup.find_all(class_=‘py1‘))
 74 #
 75 # #text查找内容
 76 # print(soup.find_all(text=‘this is a python demo page‘))#用来做内容匹配
 77 #
 78 # #find(name,attrs,recursive,text,**kwargs)
 79 # #用法一样,find只是返回单个元素,find_all返回所有元素
 80 # print(soup.find(‘p‘,attrs={‘class‘:‘course‘}))
 81 # print(type(soup.find(‘p‘)))
 82 
 83 
 84 #css选择器,返回列表
 85 #通过select()直接传入css选择器即可完成选择
 86 #选择class属性就直接用‘.‘代替,例:class=‘course’--》.course;#代表id
 87 # print(soup.select(‘.course .py1‘))
 88 # print(soup.select(‘p a‘))#嵌套选择
 89 # print(soup.select(‘#link1 .element‘))
 90 # print(type(soup.select(‘p‘)[0]))
 91 #
 92 # #嵌套选择
 93 # for p in soup.select(‘p‘):
 94 #     print(p.select(‘a‘))
 95 #
 96 
 97 #获取属性
 98 for p in soup.select(‘p‘):
 99     print(p[‘class‘])
100     print(p.attrs[‘class‘])
101 
102 
103 #获取内容
104 for p in soup.select(‘p‘):
105     print(p.get_text())

bs4库详解

原文地址:https://www.cnblogs.com/qqw-1995/p/9860501.html

本文内容由IT人知识库(原文链接:http://www.itpeo.net/9999/4539862.html)本站为各位整理





标签 详解

C#Emgu类型转换

bitmap:   bitmap位图文件,是windows标准格式,也是.net主要的图像存储格式。   bitmap ...

springboot学习总结(三)RestTemplate用法

(一)配置类 package com.vincent.demo.config; import org.springf ...

安全的企业邮箱如何选择

目前市场上能说得上品牌的企业邮箱超过30个,如果计算上没有品牌的,或者是主营业务是网站建设也在做企业邮箱的,可以用多如牛 ...

0x5A~0x5B

目录 0x5a~0x5b 0x5a 斜率优化 ...

[poj]3281Dining

原题 题目大意 n头奶牛,只能吃某种食物和饮料(而且只能吃特定的一份) 一种食物被一头牛吃了之后,其余牛就不能吃了 第一 ...

西南seo大神理解的互联网+

“农村将成为互联网领域的‘沃土’,而非信息时代失联的‘孤岛’。大力发展农村互联网,打造现代智慧农村。在农村产业结构调整、 ...

新媒体的冲击,传统企业的出路在哪?

新媒体冲击,传统企业的出路在哪? 在二零壹伍克强总理提出我们进入互联网+时代起,我国正式宣布进入后互联网时代,在互联网新 ...

「mysql优化专题」详解引擎(InnoDB,MyISAM)的内存优化攻略?(9)

注意:以下都是在mysql目录下的my.ini文件中改写(技术文)。 一、innodb内存优化 innodb用一块内存区 ...

Django==>Form组件

django ==gt; form 组件 目录: 1.基本使用 2.form中字段和插件 3.自定义验证规则 4.动态加 ...

AndroidStudio解决ADB检测不到手机导致无法连接的问题

adb的全称是android debug bridge,是用来管理模拟器和真机的通用调试工具。   开usb调试 ...

微信小程序(五)

javascript:   javascript 是一种轻量的,解释型的,面对对象的头等函数语言,是一种动态的基于原型和 ...

linux安装维护

samba installation and setup 1. install sudo apt-get instal ...

【UOJ274】【清华集训2016】温暖会指引我们前行LCT

【uoj274】【清华集训2016】温暖会指引我们前行 任务描述 虽然小r住的宿舍楼早已来了暖气,但是由于某些原因,宿舍 ...

string和newstring()的区别,以及equals与==的去别

import java.util.scanner; public class testscanner { pu ...

自己喜欢的一些句子摘录--2017-09-09

自己喜欢的一些文章中的句子摘录、、、 ================= 生活中最重要的就是选择,太多的选择让我们不知所 ...

java核心编程——IO流之字符流和字节流相互转换(四)

1.为什么字符流和字节流需要转换?   这是因为有一些时候系统给你提供的只有字节流,比如说system.in标准输入流。 ...

python网页爬取数据生成文字云图

1. 需要的三个包: from wordcloud import wordcloud #词云库 impo ...

程序媛计划——python网络编程

class1 正则表达式 #定义 正则表达式是对字符串操作的一种逻辑公式,通过它我们能筛选过滤出我们需要的内容,如判断一 ...

linux配置nginx开机自启动

第一步 首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令: vi /etc/in ...

Linux下安装配置Mysql和Redis

linux下如何安装mysql(mariadb) linux下如何安装软件? 1. yum安装软件也得注意,一个是配置y ...