Python3爬虫之urllib携带cookie爬取网页的方法
对于需要登录的网站,我们需要在发送请求时携带cookie信息,才能够获取到网站的内容。在Python中,我们可以使用urllib库来发送网络请求,并在请求中携带cookie信息。
以下是使用urllib携带cookie进行爬取的完整攻略:
1、获取cookie
在发送请求时,我们需要先获取cookie信息。可以通过登录网站后手动复制浏览器中的cookie信息,也可以通过代码自动获取cookie信息。
1.1 手动获取cookie
打开浏览器并登录目标网站,按下F12打开开发者工具,切换到Network选项卡,并刷新页面。在请求列表中选中对应的请求,查看请求头部中的cookie信息,复制即可。
1.2 自动获取cookie
可以使用urllib库中的HTTPCookieProcessor模块来自动获取cookie信息。示例代码如下:
import urllib.request
from http.cookiejar import CookieJar
# 创建cookie容器
cookie_jar = CookieJar()
# 创建cookie处理器
cookie_handler = urllib.request.HTTPCookieProcessor(cookie_jar)
# 创建opener
opener = urllib.request.build_opener(cookie_handler)
# 发送请求
response = opener.open('https://www.baidu.com')
# 获取cookie
for cookie in cookie_jar:
print(cookie.name, cookie.value)
2、携带cookie进行请求
获取到cookie信息后,我们就可以在请求中携带cookie信息来爬取需要登录的网站了。可以使用urllib库中的Request和urlopen方法来发送请求。
示例代码如下:
import urllib.request
# 携带cookie信息的headers
headers = {
'Cookie': 'xxx'
}
# 创建request对象
req = urllib.request.Request(url='https://www.xxx.com', headers=headers)
# 发送请求
response = urllib.request.urlopen(req)
# 获取响应内容
content = response.read()
其中,headers字典中的'Cookie'字段即为我们需要携带的cookie信息。
另外,我们还可以将cookie信息写入到文件中,方便多次使用。
示例代码如下:
import urllib.request
import http.cookiejar
# 创建cookie容器
cookie_jar = http.cookiejar.LWPCookieJar('cookie.txt')
# 创建cookie处理器
cookie_handler = urllib.request.HTTPCookieProcessor(cookie_jar)
# 创建opener
opener = urllib.request.build_opener(cookie_handler)
# 发送请求
response = opener.open('https://www.baidu.com')
# 保存cookie信息到文件
cookie_jar.save(ignore_discard=True, ignore_expires=True)
# 读取cookie信息
cookie_jar.load(ignore_discard=True, ignore_expires=True)
# 携带cookie信息的headers
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
}
# 创建request对象
req = urllib.request.Request(url='https://www.xxx.com', headers=headers)
# 发送请求
response = opener.open(req)
# 获取响应内容
content = response.read()
在代码中,我们首先创建了一个cookie容器并将其保存在了本地文件cookie.txt中。
接着,我们通过发送一个请求来获取到cookie信息,并将其保存到了本地文件cookie.txt中。
在之后的请求中,我们只需要从cookie.txt文件中读取cookie信息并携带到请求中即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3爬虫之urllib携带cookie爬取网页的方法 - Python技术站