一、Tag对象对应于原始文档中的XML或HTML标签
Tag有很多方法和属性, 可用 遍历文档树 和 搜索文档树 以及获取标签内容
Tag 对象常见属性
name: 获取标签名称
attrs: 获取标签所有属性的键和值
text: 获取标签的文本字符串
一个案例:从疫情首页提取各国最新疫情数据
思路:
- 导入相关模块
import requests
from bs4 import BeautifulSoup
- 发送请求, 获取疫情首页内容
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page = response.content.decode()
print(home_page)
得到了想要的内容
进一步获得想要的数据,就要根据标签内容来指定文本
比如查找美国,可以得到它的标签是getListByCountryTypeService2true
- 使用BeautifulSoup提取疫情数据
soup = BeautifulSoup(home_page, 'lxml')
script = soup.find(id='getListByCountryTypeService2true')
text = script.text
print(text)
成功
二、正则表达式
概念:正则表达式(regular expression) 是一种字符串匹配的模式(pattern)
作用:
1)检查一个字符串中是否含有某子串
2)替换匹配的子串
3)提取某字符串中匹配的子串。这是爬虫中使用最多的功能
常见语法:
1.
1)一般字符
匹配 […] 中的所有字符,例如 [aeiou] 匹配字符串 “google runoob taobao” 中所有的 e o u a 字母。
2)点号“.”字符,匹配任意(除换行符\n之外)的字符,在DOALL模式中也能匹配换行符,比如abc→a.c
3)转义字符\,将后面的字符改变意思,比如a.c→a.c,有时想要找的内容里面包含通配符,需要转换成普通字符,就需要用到
如果字符串中有字符* 需要匹配,可以使用反斜线+星号的方式或字符集[星号]:a\c→a\c
4)字符集(字符类),表示区间
预定义字符集
\d: 匹配一个数字字符。等价于 [0-9]。
\D: 匹配一个非数字字符。等价于 [^0-9]。
\w: 匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’。
\W: 匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]’。
\s: 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S: 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。