一、调试模式介绍
调试模式,即进入网页页面半代码模式,查看网页与代码一一对应关系。鼠标右键,再出现选项中找到检查进入调试模式,或者按键盘上的F12键进入调试模式。
功能介绍:
elements:点击这个功能后出现的是当前页面的html文件,在你想实时修改的那个元素出双击,可以暂时修改,不过并没有同步到后台;
console:控制台,用来打印错误信息和你在后台写的console.log(“显示信息”)
source:资源管理功能,用于调试js文件,这里要说明的一点是,在右侧找不到你想调试的js文件时,可以在后台写“debugger”进入到这个js文件后可以在右侧单击打断点,想调哪里就哪里;
network:网络功能,用于查看相关的ajax请求,详情参考上图所示。
二、Cookie
cookie的用处
当客户端和服务器通过三次握手四次挥手建立起稳定连接之后,这个时候它们之间进行数据相互还会携带一个cookie参数。这个参数包含着诸如账号、密码以及一些偏好设置,一边提供个性化的内容。
当然cookie也是有 有效期的,超过有效期cookie将会清除作废,所以在编写一个cookie爬虫代码的时候,并不是一次编写永久运行。每隔一段时间段就需要更新cookie。
cookie的应用
什么时候使用cookie?
1. 当模拟登录不好编写时(结构复杂,有加密);
2. 只有cookie没有账号密码;
3. 网站根据cookie对用户进行推荐,专门爬取某人的个人推荐时。
在代码中利用cookies?
1. 将cookie写入headers中;
2. 使用get方法中的cookies参数进行传递 注意:参数必须为字典类型;
注意事项:
1. 自定义headers中的cookie,后面没有s(非cookies);
2. get方法中的cookies参数 cookies后面有s;
3. cookie一定是键值对存在的。
会话保持
1. 为什么要进行会话保持?
在requests.post请求中,去登录一个网站,会携带用户名和密码等信息。得到的response响应中,得到了cookie。但是这个时候如果我们成功登录进去了网页,想要打开网页的其他部分,会发现访问失败了。因为每一个requests请求,都是新打开一个浏览器去进行访问的,那我们不肯能去做每一个请求都要去登录一下怎么办? 就需要用到保持会话的功能了,我们可以只登录一次,然后保持这种状态去做其他的或者更多的请求。
2. requests.session() 会话保持!
说白了,就是比如你使用session成功登录了某个网站,则在再次使用该session对象请求该网站的其他网页默认使用该session之前使用的cookie等参数
3. 在什么时候进行使用?
1. 需要爬虫保持登录状态;
2. 爬虫需要携带一些特定的参数。比如购物网站的无登录状态下的推荐,主要是cookie。
模拟登录---使用requests
import requests from requests.utils import dict_from_cookiejar # cookiejar对象转字典 url = "https://www.xxsy.net/LoginNew/dologin" book_url = "https://www.xxsy.net/control?t=1" # 书架url,如果没有登录进去是访问不了书架的 headers = { “user-agent”: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" } # 账号密码 data = { "username": "18986145549" "password": "dongli123456" } # 发起一个post请求 response1 = requests.post(url, headers=headers, data=data) # 通过往get请求里面传cookie访问书架页面 response2 = requests.get(book_url, headers=headers, cookies=dict_from_cookiejar(response1.cookies)) print(response2.text)
模拟登录---使用session
import requests from requests.utils import dict_from_cookiejar # cookiejar对象转字典 url = "https://www.xxsy.net/LoginNew/dologin" book_url = "https://www.xxsy.net/control?t=1" # 书架url,如果没有登录进去是访问不了书架的 session = requests.session() headers = { “user-agent”: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" } # 账号密码 data = { "username": "18986145549" "password": "dongli123456" } # 发起一个post请求 response1 = session.post(url, headers=headers, data=data) # 获取到书架页面,通过cookies response2 = session.get(book_url, headers=headers)) print(response2.text)
三、代理、禁止重定向
代理
1. 透明代理
代理服务器将客服端的信息转发至目标访问对象,并没有完全隐藏客户端真实的身份。即服务器知道客户端使用了代理IP,并且知道客户端的真实IP地址。
2. 普通匿名代理
代理服务器用自己的IP代替了客户端的真实IP,但是告诉了目标访问对象这是代理访问。
3. 高匿代理
代理服务器良好第伪装了客户端,不但用一个随机的IP代理提客户端的IP,也隐藏了代理信息,服务器不会察觉到客服端是通过代理实现访问的,即用户仿佛就是直接使用代理服务器作为自己的客户端。所以使用高匿代理就可以隐藏自己的真实IP。
禁止重定向
目标网址: https://h5.pipix.com/s/JFfPN5J/
实际访问网址:https://h5.pipix.com/item/837720444338968835?app_id=1319&app=supper×tamp=1594730497&carrier_region=cn®ion=cn&language=zh&utm_source=weixin 通过添加allow redirects=False属性来禁止重定向。
超时处理
import request url = "http://google.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" } try: response = requests.get(url, headers=headers, timeout=3) response = requests.get)url, headers=headers, timeout(3, 7)) # (请求时间, 响应时间) print(response.text) except requests.exceptions.ConnectTimeout as e: # 捕获连接超时异常 ConnectTimeout print("连接超时 错误:", e)
retrying模块
from retrying import retry @retry # 如果出现异常会一直重试 # @retry(stop_mmax_attempt_number=3) # 用来设定最大的尝试次数,超过该次数就停止重试 # @retry(stop_max_delay=3000) # 设置失败重试的最大时间,单位毫秒,超出时间,则停止重试,3秒之后报错 # @retry(wait_fixed=2000) # 设置失败重试的间隔时间 # @retry(wait_random_min=1000, wait_random_max=5000) # 设置失败重试随机性间隔时间 有时快,有时慢 def demo(): print("==========") raise # 这里故意报错! if __name__ == "__main__": demo()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理