爬虫的基础
在上期我们成功的安装了相关的python环境折起我们来讲解爬虫从讲解到反爬,讲解cookie,UA等,好了废话不多说我们开始吧
在上期我们成功运行一下测试代码,你已经超越很多人了
import requests r = requests.get("https://example.com") # 请求代码,网站可以自行更换 print(r.status_code) # 输出状态码 print(r.text) # 输出网页源码我上期讲过.status_code==200的时候证明爬虫与服务器之间的通信是正常的
但是当我们拿这个请求去请求像百度这样没有robot.txt管理很松的网站是可以的,但是当我们请求一些常规的网站会直接返回403,这是因为你又很多参数没加,被服务器识别成了爬虫,那么又没有方法可以完成这样拿到请求呢。
爬虫的进阶
请求头
请求头(User-Agent),一般里面包含有Referer,cookie,主要是这俩个还有其他我们在就见到会说
聪明的你灵机一动把浏览器的f12(开发者模式)打开了在里面找到了user-agent把user-agent加里面了这时候请变了成了
import requests headers={"Usre-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"} #这是请求头 r = requests.get("https://example.com",headers=headers) # 请求代码,网站可以自行更换 print(r.status_code) # 输出状态码 print(r.text) # 输出网页源码这时候聪明的你发现又可以请求了,兴致冲冲的你像一个里面有文章的页面发送请求但是又返回403(我滴乖乖!!,怎么回事),怎么访问不了了???
聪明的你又把我的博客往下扒了扒
防盗链
防盗链(Referer),顾名思义是常见的一种反爬手段一般常见是厂商为了防止Spider来的但是没啥大用,但是很重要的一个设置,那怎么获取呢,在刚刚的f12下滑里找到Referer把它复制下来之后粘贴到headers里代码如下
import requests headers={"Usre-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "Referer ":" 你的防盗链 "}#这是请求头 r = requests.get("https://example.com",headers=headers) # 请求代码,网站可以自行更换 print(r.status_code) # 输出状态码 print(r.text) # 输出网页源码这时候你再次兴致冲冲的去请求网页但是现实在次给你当头一棒依旧403,依旧拿不下来,这时候聪明的你在次在网页的f12往下扒了扒发现有一个叫cookie(曲奇)的一个东西
曲奇
曲奇(cookie)是一种检测Spider的一种手段之一,一般由后端生成比较复杂原理如下
正常浏览器:
请求A → 服务器种 Cookie → 浏览器保存 → 请求B 带上 Cookie → 通过 ✅
Spider(不带 Cookie):
请求A → 服务器种 Cookie → 没保存/没带回 → 请求B 没 Cookie → 拦截 ❌
当你的爬虫不能爬取的时候一般是这个原因导致的,但聪明的你把cookie复制下来添加进headers里代码如下
import requests # 2. 设置请求头 headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ), # 防盗链 Referer:告诉服务器"我是从你的页面跳过来的" "Referer": "https://www.example.com/", # Cookie:携带登录状态或追踪标识 "Cookie": "session_id=abc123; token=xyz789; uid=10001", } # 3. 发送请求 url = "https://www.example.com/page" resp = requests.get(url, headers=headers) # 4. 检查结果 print(f"状态码: {resp.status_code}")这样你就可以爬取到网页了