在使用Python进行爬虫时,我们需要模拟客户端/浏览器发起网络请求,在此网络请求中,涉及到的爬虫库包含urllib库及requests库,在使用过程中,我选择采用requests库。
一、urllib库
定义:urllib库是python中一个最基本的(内置)网络请求库,可以模拟浏览器的行为,向指定的服务器发送一个请求,并且可以保存服务器返回的数据。
关于urllib的一些个相关操作如下:
1.1 无请求头,直接使用request.urlopen()完成请求
from urllib import request
url='https://movie.douban.com/top250'
resp=request.urlopen(url) #完成请求
print(resp.read())
运行以上代码,结果为
418代表爬虫被发现了,被直接拦截,故此我们需加入请求头,想要增加请求头,则必须使用request.Request类
1.2 加入请求头,使用request.Request类
from urllib import request
headers={
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
url='https://movie.douban.com/top250'
re=request.Request(url,headers=headers)
resp=request.urlopen(re)
print(resp.read())
以上代码在1.1爬虫结果失败的基础上加了请求头再次进行的爬取,运行结果如下:(爬取成功)
1.3 除此之外 ,urllib库中进行代理设置,cookie设置时,步骤比较繁琐,此处相关操作将会在以后的章节中进行详细讲解。
二、Requests库
“requests 库是用Python语言编写,用于访问网络资源的第三方库,与urllib库进行相比,requests库相关操作更加简单方便,故此,我更多选择采用requests库进行爬虫。
关于requests库的一些个相关操作如下:
import requests
headers={
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
url='https://movie.douban.com/top250'
response=requests.get(url,headers=headers)
print(response.text) #response.text 返回unicode编码
print(response.content) #response.content 返回字节流数据
在requests库中,无论是使用.get函数还是使用.post函数,直接在函数()内加入请求头的参数即可,使用代理时,也只需在函数()里面加入proxies参数即可,使用cookie模拟登录,也只需在函数请求头所在内容中加入cokie相关内容传入函数中即可。相比于urllib库中相关操作,requests库中相关操作使用起来容易许多,也便于理解。
以上相关操作执行结果: