1、爬虫的基本原理
熟悉前端的朋友肯定知道,在JS代码中可以使用AJAX、axios提供的API向服务器提供的数据接口请求各种数据,包括HTML网页、图片数据、json数据等,既然这样,JS能做的,Python肯定能做,因此,爬虫的原理就是模拟浏览器向服务器接口发送请求并对接收到的数据进行解析、存储和分析。
2、urllib库的使用
在Python中如何向服务器发送请求呢?肯定不需要我们自己动手去底层实现,我们可以借助于Python的原生库:urllib。
在urilib中主要包含四个模块:request、error、parse、robotparser,本章只介绍一下request模块并使用request模块向百度(Baidu)主页发送请求获取HTML页面。
1、request模块介绍与引入
request是最基本的HTTP请求模块,使用它可以模拟浏览器向服务器发送请求。
我们可以使用import urllib.request语句来导入该模块。
import urllib.request
2、使用request模块向服务器发送请求并获取html页面
1、定义url(注意是http,不是https)
url = 'http://www.baidu.com/'
2、使用urlopen()方法发送请求获取数据
response = urllib.request.urlopen(url)
3、 使用read()方法获取字符串形式的数据并使用decode()方法解析数据
content = response.read().decode('utf-8')
4、使用open()方法保存页面数据
with open('baidu.html','w',encoding='utf-8') as file:
file.write(content)
3、查看爬取结果
在浏览器打开:
爬取成功!
3、完整代码
# written by cy on 2022-01-08 19:47
import urllib.request
#使用urllib来获取百度的源码
#(1)定义一个url,就是你要访问的地址
url = 'http://www.baidu.com/'
#(2)模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)
#(3)获取响应中的页面源码,read()方法返回的是字节形式的二进制数据
#要将二进制的数据转换为字符串
#二进制--》字符串 解码
content = response.read().decode('utf-8')
#(4)保存数据
with open('baidu.html','w',encoding='utf-8') as file:
file.write(content)
下一次就和大家分享如何爬取图片和视频噢!觉得有用的点个👍再走 蟹蟹大家~