requests设置超时时间/requests.Session自动保存cookie/verify忽略ssl证书
1.使用urllib爬取百度搜索html2.urllib.request.Request对象封装请求3.urllib发送get请求_中文传参问题4.urllib发送post请求获取html源代码5.获取动态页面html6.忽略SSL证书验证7.使用fake-useragent库伪装请求头8.urllib自定义opener对象设置代理IP9.爬虫cookie的使用10.保存与读取cookie11.使用urllib.error进行请求异常处理12.使用requests库发送get和post请求13.使用Request伪装User-Agent和IP地址
14.requests设置超时时间/requests.Session自动保存cookie/verify忽略ssl证书
15.re模块的正则表达式规则16.使用re的正则表达式提取腾讯体育新闻摘要17.BeautifulSoup4解析数据18.bs4.find_all()搜索文档树和css选择器提取解析后的html数据19.bs4解析并提取人民网新闻标题数据20.xpath解析数据21.谷歌浏览器的xpath插件安装22.使用re和lxml的xpath功能提取纵横中文网小说推荐榜前3页标题23.JSON数据24.使用jsonpath快速提取json的数据25.提取猫眼电影正在热映电影以及评分26.单线程与多线程爬虫requests设置超时时间
可以通过timeout属性设置超时时间,一旦超过这个时间还没有获得响应内容,就会提示错误。爬取大量数据时,可以分离出响应时间过长的url,后续再处理。
import requests
from fake_useragent import UserAgent
# 请求地址
url = 'http://www.github.com'
# 封装请求头
headers = {'User-Agent': UserAgent().chrome}
# 设置超时报错,并处理报错的url
timeout = []
try:
# 发送请求
resp = requests.get(url, headers=headers, timeout=0.001)
except:
# 如果报错执行此代码块
timeout.append(url)
print(url)
else:
# 如果try块没有报错,执行此代码块
# 读取响应内容
print(resp.text)
保存cookies
urllib保持cookies:https://www.cnblogs.com/qyly/p/18417260
,https://www.cnblogs.com/qyly/p/18419063
requests.Session()是python的requests库中的一个功能,它允许用户创建一个会话对象,用于持久化某些参数,比如cookies。为什么Session对象能自动保存cookies:
- 持久化连接,Session对象会在多个请求之间保持连接,这意味着一旦建立了TCP连接,它就会重用,减少连接的开销。
- 自动处理cookies,Session对象会自动处理服务器返回的cookies,并在后续的请求中携带这些cookies。如果在一个请求中登录了某个网站,那么在随后的请求中,Session会自动发送登录时获得的cookies从而保持登陆状态。
- 会话状态,Session对象维护了服务器设置的cookies的状态,因此在多个请求之间也能保持会话状态。
还是使用贝克街推理论坛练手,先建立Session会话对象发送post请求登录,拿到cookie后使用同一个Session对象向目标url发送get请求获取响应的html。
运行代码:
import requests
from fake_useragent import UserAgent
# 登录页面的url
url = 'https://www.tuilixy.net/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=Lz8z2&inajax=1'
# post参数
data = {
'username': '困在水里的鱼',
'password': 'Beikejie027'
}
# 封装请求头
headers = {'User-Agent': UserAgent().firefox}
# 创建Session对象
s = requests.Session()
# 发送post请求
# 登录成功后就保存了cookie
s.post(url, headers=headers, data=data)
# 目标url,新学员主页,只有登录才能查看
index_url = 'https://www.tuilixy.net/space-username-zhyugi.html'
# 访问新成员的主页
resp = s.get(index_url, headers=headers)
# 打印响应的html文本内容
print(resp.text)
运行结果:
ssl验证
# 禁用来自urllib3库的所有警告,使输出更清洁
requests.packages.urllib3.disable_warnings()
# 将False赋值给verify参数禁用SSL证书验证
resp = requests.get(url, verify=False, headers=headers)
urllib禁用ssl验证:https://www.cnblogs.com/qyly/p/18415310
除了禁用SSL验证,还可以自定义CA证书不使用系统默认的证书,使用环境变量指定CA证书的路径,使用certifi库使用certify.where()获取证书路径将其传递给verify参数等方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?