Soup.head.contents
Soup.body.contents
Forchild in soup.body.children
Print(child)
遍历儿子节点
For child in soup.body.children
Print(child)
遍历子孙节点
.parent 节点的父亲标签
.parents 节点先辈的迭代类型,用于循环遍历先辈节点
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签
平行遍历发生在同一个父亲节点下的各节点间
如何让html内容更加友好的显示?
bs4的prettify() 会将每个标签的后面加上一个换行符
Print(soup.prettify())
首先把页面变成soup变量
Soup.p.string显示p标签内容
Bs4基本元素:
Tag标签 name标签的名字 attributes标签的属性 navigablestring标签之间的字符串 comment标签内容中间的注释
信息提取:
XML JSON YAML 搜索
提取HTML中所有的URL链接
Bs4遍历
.contents .children .descendants .parent .parents .next_sibling .next_siblings
.previous_sibling .previous_siblings
信息标记:
XML扩展标记语言
JSON 有类型的键值对:key:value 增加双引号表示它为字符串,数字除外
“name”:[“a”,”b”]
“key”:{“newkey”:”b”;”oldkey”:”c”}
YAML无类型键值对key:value
但是建和值都不加双引号
Name:
Newname:a
Oldname:b
Internet主要XML
接口处理的地方 无注释 JSON
各类型系统的配置文件 有注释 YAML
中国大学排名爬虫实战优化(实例):
当中文字符宽度不够时,采用西文字符填充,从而导致对齐不漂亮
处理方法:
采用中文字符来填充chr(12288)
正则表达式
正则表达式是用来表示一组字符串的
正则表达式的语法;
由字符和操作符组成
RE库:
采用raw string 表示正则表达式,指不包含转义字符得字符串
r’[1-9]+‘
RE库默认采用贪婪匹配,即输出匹配最长子串
在一个字符串中搜索匹配正则表达式得第一个位置,并返回match对象
re.search(pattern,string,flags)
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
Pattern:正则表达式的字符串或原生字符串
String:待匹配字符串
Flags:正则表达式使用时的控制标记
re.match(pattern,string,flags=0)
从一个字符串的开始位置起匹配正则表达式,返回match对象
Pattern:正则表达式的字符串或原生字符串
String:待匹配字符串
Flags:正则表达式使用时的控制标记
re.findall(pattern,string,flags=0)
搜索字符串,以列表类型返回全部能匹配的子串
Pattern:正则表达式的字符串或原生字符串
String:待匹配字符串
Flags:正则表达式使用时的控制标记
re.split(pattern,string,maxsplit=0,flags=0)
将一个字符串按照正则表达式结果进行分割,返回列表类型
Pattern:正则表达式的字符串或原生字符串
String:待匹配字符串
Maxsplit:最大分割数,剩余部分作为最后一个元素输出
Flags:正则表达式使用时的控制标记
re.finditer(pattern,string,flags=0)
搜索字符串,返回一个匹配结果的迭代类型,每个迭代类型时match对象
re.sub(pattern,repl,string,count=0,flags=0)
在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
regex = re.compile(pattern,flags=0)
将正则表达式的字符串形式编译成正则表达式对象
pandas用来做数据处理
numpy用来进行高维矩阵运算
matplotlib用来做数据可视化
原文:https://www.cnblogs.com/yaggy/p/12731044.html