Python 的爬虫功能使得程序员可以快速抓取并分析网页中的信息,它实质上是模拟浏览器访问网页。本章主要常用的两个爬虫相关的库requests
,beautifulsoup4
。若要模拟鼠标点击等,要用到selenium
库,限于篇幅限制,本章不再介绍,具体可以查阅相关资料。
requests
库每个网页都有源代码,可以通过鼠标单击右键查看网页源代码。网页中的很多信息都在源代码里面,requests
是一个访问网页源代码的库。一般通过 get 函数访问网页,另外一个常用来访问网页的函数是 post,与 get 函数的区别在于 post 能够传递表格或文件到网页所在服务器上。
get(url, [timeout], [headers], [proxies], **kwargs) | |
---|---|
url | 网页链接 |
timeout | 可选参数,请求网页的最大时长,单位为秒 |
headers | 可选参数,模拟浏览器设置 |
proxies | 可选参数,代理服务器设置 |
**kwargs | 其他参数 |
get 或 post 函数返回一个 Resoponse 对象,该对象包括以下常用的属性或函数。
属性或函数 | 描述 |
---|---|
status_code | 网页请求的返回状态,200 表示连接成功,404 表示连接失败 |
text | 响应网页的字符串内容 |
encoding | 响应网页的编码方式,可以更改 |
content | 相应网页的字节形式内容,例如图片或 pdf 文件等 |
raise_for_status() | 如果网页访问不成功,抛出异常,一般结合 try-except 语句使用 |
json() | 该函数可以解析网页内容中 JSON 格式的数据 |
import requests
r = requests.get('http://www.baidu.com')
r.status_code
200
r.text # 结果省略
r.encoding # 若为 ISO-8859-1 则中文为乱码
'ISO-8859-1'
r.encoding = 'utf-8' # 无论网页原内容是什么编码,都改成 utf-8 编码
beautifulsoup4
库使用requests
获取的网页源代码一般非常复杂,不仅包括常规内容,还包括很多定义页面格式的代码。
:class: tip
- 网页中的内容一般在网页源代码的各个标签里
例如有下面的 html 代码:
html_doc = """
Hello, BeautifulSoup!
text1
text2
"""
beautifulsoup4
库提供了大量的属性或函数,能够方便地将网页(html)不同标签(tag)中的内容提取出来。常用的属性有下面几个:
属性 | 描述 |
---|---|
head | 网页源代码中的 标签内容 |
title | 网页源代码中的 |
body | 网页源代码中的 标签内容 |
p | 网页源代码中的第一个 标签内容 |
a | 网页源代码中的第一个 标签内容 |
div | 网页源代码中的第一个 标签内容 |
script | 网页源代码中的第一个 |