- 网络爬虫与浏览器的区别:浏览器是展示数据的,而网络爬虫是采集数据的
- 定义:模拟客户端发送请求相应数据,按照一定规则,自动从万维网上获取信息的程序
- 作用:从万维网上,获取我们需要的信息
- requests作用:发送请求,获取响应数据
- 发送get请求:
response = requests.get(url)
- Beautiful Soup可以从HTML或XML中提取数据
- Beautiful Soup对象的创建:
soup = BeautifulSoup(html, ‘lxml’)
- BeautifulSoup对象的find方法
- (1)根据标签名查找:
soup.find(‘a’)
- (2)根据属性查找:
soup.find(‘id=’link1’)或soup.find(atrrs={‘id’:’link1’}
- (3)根据文本内容查找:
soup.find(text=’Elsie’)
- Tag对象
- (1)Tag对象对英语原始文档中的XML或HTML标签
- (2)Tag对象常用属性:name, attrs, text
- 概念:正则表达式是一种字符串匹配的模式(pattern)
- 作用:从某个字符串中提取符合某种条件的字串
- 语法
- (1)
.
匹配除换行符(\n)以外的所有字符 - (2)
\d
匹配[0-9]的数字 - (3)
\w
匹配字母数字_和中文 - (4)
*
前面的一个匹配模式出现0次或多次 - (5)
+
前面的一个匹配模式出现1次或多次 - (6)
?
前面的一个匹配模式出现0或1次
- API
- (1)re.findall(pattern, string, flags=0)
- (2)作用:扫描整个String字符串,返回所有与pattern匹配的列表
- (3)参数: ①Pattern:正则表达式 ②String:从这个字符串中查找 ③Flags:匹配模式
- (4)返回 ①返回String中于pattern匹配的结果的列表
- 特点
- (1)如果正则表达式中没有()则返回与整个正则匹配的列表
- (2)如果正则表达式中有(),则返回()中匹配的内容列表,小括号两边东西都是负责确定提取数据所在位置
- R原串
- (1)正则中使用r原始字符串,能够忽略转移符号带来的影响
- (2)待匹配的字符串有多少个\,r原串正则中就添加多少个\即可
- JSON转换为Python: json.loads(s) json.load(fp)
- Python转换为JSON: json.dumps(obj) json.dump(obj, fp)
- 发送请求,获取疫情首页
- 从疫情首页中提取最近一日各国疫情字符串
- 从最近一日疫情字符串中,提取json格式字符串
- 把json格式字符串转换为python类型
- 把python类型的数据,以json格式存入文件中
- 加载最近一个各国疫情数据
- 遍历各国疫情数据,获取从1月23日以来的各个国家疫情的数据统计URL
- 发送请求,获取从1月23日以来各个国家疫情的json字符串
- 解析各个国家疫情的json字符串,添加到列表
- 以json格式保存数据
- 发送请求,获取疫情首页内容
- 解析疫情首页内容,获取最近一日各省疫情信息id="getAreaStat"
- 以json格式保存信息
- 加载最近一日全国疫情信息
- 遍历最近一日全国疫情信息,获取各省疫情URL
- 发送请求,获取各省疫情json字符串
- 解析各省疫情json字符串,并添加列表中
- 以json格式保存疫情信息