复习:爬虫和办公自动化(三)
解析数据:BeautifulSoup("<html>HTML文本</html>“,"html.parser")
html.parser:解析器
BeautifulSoup对象:
find()和find_all()方法:对网页源代码初步筛选
- find() 返回符合条件的首个数据 返回值是Tag对象
- find_all() 返回符合条件的所有数据 返回值是Tag对象组成的列表
Tag对象的常用属性与方法:
- tag.find() 返回符合条件的首个数据
- tag.find_all() 返回符合条件的所有数据
- tag.text 获取标签的文本内容
- tag[‘属性名’] 获取标签HTML属性的值
静态网页爬虫的过程:
网址——requests——Responsse 对象(res.text)——BeautifulSoup——BeautifulSoup对象——find()/find_all()方法——找到数据——tag.text/tag[‘属性名’]
**
爬虫和办公自动化(四)
**
爬取整个网站:
以豆瓣读书为例,当我们点击第二页后,观察浏览器的地址栏,发现网址变了。网址变成了 https://book.douban.com/top250?start=25,和原来相比后面多了一个 ?start=25
这部分被称为 查询字符串,查询字符串作为用于搜索的参数或处理的数据传送给服务器处理,格式是 ?key1=value1&key2=value2
? 前面是网页的地址,后面是查询字符串。以键值对 key=value 的形式赋值,多个键值对之间用 & 连接在一起。例如 ?a=1&b=2 表示:a 的值为 1,b 的值为 2。
查询字符串用于信息的传递,服务器通过它就能知道你想要什么,从而给你返回对应的内容。比如你在CSDN搜索 python,网址会变成https://so.csdn.net/so/search/s.do?q=python&t=&u=,后面的查询字符串告诉服务器你想要的是有关 python 的内容,于是服务器便将有关 python 的内容返回给你了。
多翻几页豆瓣读书的页面,观察一下网址的变化规律:
- 第二页:https://book.douban.com/top250?start=25
- 第三页:https://book.douban.com/top250?start=50
- 第十页:https://book.douban.com/top250?start=225
因为每页展示 25 本书,第一页 start 是 0,第二页 start 是 25,第三页 start 是 50,第十页 start 是 225。因此 start 的计算公式为 start = 25 * (页码数 - 1)(25 为每页展示的数量)。
可以通过代码自动生成豆瓣图书 Top250 所有数据(10 页)的地址:
url = 'https://book.douban.com/top250?start={}'
# num 从 0 开始因此不用再 -1
urls = [url.format(num * 25) for num in range(10)]
print(url