*复习 爬虫和办公自动化(二)*:
HTML常见元素:
- h1 一级标题
<h1>标题</h1>
- h2 二级标题
<h2>标题2</h2>
- p 段落标签
<p>这是一个段落</p>
- a 超链接,用来跳转网页
<a href="a.html">链接</a>
- img 图片标签,用于展示图片
<img src="pic.jpg"/>
- div 用于定义文档的块区域
<div>这是一个块区域</div
>
非自闭合元素和自闭合元素
- 非自闭合元素:
<h1>Hello,world!</h>
- 自闭合元素:
<meta charset="utf-8"/>
HTML元素属性:属性名=“属性值” 且必须在开始标签中。HTML元素可以拥有多个属性,用空格分隔开即可。
爬虫和办公自动化(三)
**处理数据:
**
第三方库BeautifulSoup:BeautifulSoup库的名字取自刘易斯·卡罗尔在《爱丽丝梦游仙境》里的同名诗歌
处理数据分为两步:解析数据和提取数据
解析数据:指将网页源代码解析成 Python 能“读懂”的格式
提取数据:指将网页源代码中无关数据过滤掉,只提取出我们所需要的数据。
解析数据
:
豆瓣读书 Top250 为例,它的网址是:https://book.douban.com/top250
将其网页代码解析成BeautifulSoup对象:
import requests
from bs4 import BeautifulSoup
headers = {
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
res = requests.get('https://book.douban.com/top250', headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
print(soup)
-
相比之前我们添加 headers 参数,这是为了应对豆瓣的反爬虫机制
-
通过 from bs4 import BeautifulSoup 语句导入 BeautifulSoup,然后使用 BeautifulSoup(res.text, ‘html.parser’) 语句将网页源代码的字符串形式解析成了 BeautifulSoup 对象
-
创建 BeautifulSoup 对象时需要传入两个参数:
- 第一个参数是要解析的 HTML 文本,即网站源代码的字符串形式(res.text)。
- 第二个参数是解析 HTML 的解析器,html.parser 是 Python 中内置的解析器,较为简单方便。
网页源代码解析成 BeautifulSoup 对象,打印出来的结果和原来的网页源代码(也就是 res.text)一模一样,但实际上是不同的东西可以用 type() 函数将 res.text 和 BeautifulSoup 对象 的类型打印出来对比一下:
res = requests.get('https://book.douban.com/top250', headers=headers)
print(type(res.text))
输出:<class 'str'>
soup = BeautifulSoup(res.text, 'html.parser')
print(type(soup))
输出:<class 'bs4.BeautifulSoup'>
可以看到,**res.text 的类型是字符串,而 soup 的类型是 BeautifulSoup 对象。**相比字符串,BeautifulSoup 对象 里有很多强大的方法和属性。通过这些方法和属性,我们就能方便快捷地提取出我们所需要的数据。
提取数据:
find()方法和find_all()方法:
- find() 返回符