pyhton 爬虫学习笔记(三)
【Python网络爬虫与信息提取】.MOOC. 北京理工大学
-
信息标记的三种形式
-
XML(eXtensible Markup Language)
-
JSON(JavaScript Object Notation):
- 有类型的键值对(key:value):字符串要加双引号“”
- 多值用[ , ]组织,新的键值对作为值采用{ }
-
YAML(YAML Ain’t Makeup Language)
- 无类型键值对(key:value):不用双引号
- 缩进表示所属关系
- “-”(减号)表达并列关系
- “|” 表示整块数据
- “#” 进行注释
-
三种信息标记形式比较
-
XML
- 最早的通用信息标记语言,可扩展性好,但繁琐
- Internet上的信息交互与传递
-
JSON
-
信息有类型,适合程序处理(js),较XML简洁
-
移动应用云端和节点的信息接通,无注释
-
-
YAML
- 信息无类型,文本信息比例最高,可读性好
- 各类系统的配置文件,有注释易读
-
-
-
信息提取的一般方法
-
先解析信息标记形式,再提取关键信息
-
无视信息标记形式,直接提取关键字
-
融合方法 : 结合形式解析与搜索方法,提取关键信息
-
-
基于BeautifulSoup库的内容查找方法
- <>.find_all(name,attrs,recursive,string,**kwargs) //返回一个列表类型,存储茶查找的结果
>>> import requests >>> r = requests.get("http://python.io/ws/demo.html") >>> demo = r.text >>> demo >>> soup = BeautifulSoup(demo,"html.parser") >>> soup.find_all('a') >>> soup.find_all(['a','b']) //给第一个参数传入一个列表 >>> for tag in soup.find_all(True): print(tag.name) //打印文档中的所有tag标签 >>> import re //引入正则表达式 >>> for tag in soup.find_all(re.compile('b')): //查找以b开头的标签 print(tag.name) //name:对标签名称检索 >>> soup.find_all('p','course') //查找p标签中包含course字符串的信息 >>> for link in soup.find('a'): print(link.get('href')) >>> soup.find_all(id='link1') //对属性进行约定 >>> soup.find_all('a',recursive=False) //recursive:是否对子孙全部检索,默认True,为False表示只搜索当前节点的儿子节点信息 >>> soup.find_all(string = "Basic Python") //string表示对标签(<>...</>)中的字符串进行检索 >>> import re >>> soup.find_all(string = re.compile("python")) //检索含Python的所有字符串域
扩展方法:
<>.find()
、<>.find_parents()
、<>.find_parent()
、<>.find_next_siblings()
、<>.find_next_sibling
、<>.find_previous_siblings()
、<>.find_previous_sibling()